You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python解决时钟角度问题(Clock Angle Problem)?

时钟角度问题解法

问题描述

给定24小时制hh:mm格式的时间,计算模拟时钟上时针与分针之间的较小夹角。

核心原理

模拟时钟一圈为360°,通过分别计算时针、分针的绝对角度,再推导两者的最小夹角:

  • 分针:每分钟转动6°(360° ÷ 60分钟),分针角度 = 分钟数 × 6
  • 时针:每小时转动30°(360° ÷ 12小时),同时每分钟额外转动0.5°(30° ÷ 60分钟);24小时制需先转成12小时制(取模12),时针角度 = (小时数 % 12) × 30 + 分钟数 × 0.5
  • 最小夹角:计算角度差的绝对值后,取该值与360° - 该值中的较小者(夹角不会超过180°)

计算公式

设输入时间为h:m(h为小时,m为分钟):

  1. 分针角度:minute_angle = m * 6
  2. 时针角度:hour_angle = (h % 12) * 30 + m * 0.5
  3. 角度差:diff = abs(hour_angle - minute_angle)
  4. 最小夹角:min_angle = min(diff, 360 - diff)

示例验证

  • 输入5:30:
    分针角度 = 30×6 = 180°,时针角度 = (5%12)×30 + 30×0.5 = 165°,角度差15°,最小夹角为15°
  • 输入21:00:
    21%12 = 9,时针角度 = 9×30 = 270°,分针角度0°,角度差270°,360-270=90°,最小夹角为90°
  • 输入12:00:
    12%12 = 0,时针角度 = 0×30 + 0×0.5 = 0°,分针角度0°,角度差0°,最小夹角为0°

代码实现(Python)

def get_clock_min_angle(time):
    h, m = map(int, time.split(':'))
    minute_angle = m * 6
    hour_angle = (h % 12) * 30 + m * 0.5
    angle_diff = abs(hour_angle - minute_angle)
    min_angle = min(angle_diff, 360 - angle_diff)
    # 统一角度显示格式
    return f"{int(min_angle)}°" if min_angle.is_integer() else f"{min_angle}°"

# 测试用例
print(get_clock_min_angle("5:30"))   # 输出:15°
print(get_clock_min_angle("21:00"))  # 输出:90°
print(get_clock_min_angle("12:00"))  # 输出:0°

内容的提问来源于stack exchange,提问作者Sashank garg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 15:30:43