我想要达到的目标是取一个字符串,将时间提取为小时和分钟,并将它们作为度数返回到模拟时钟刻度盘上,我能想到的唯一方法是创建2个函数,一个返回小时,另一小时返回分钟。我可能完全以错误的方式解决了这个问题(我是初学者)。我现在需要将两个函数的结果组合为一个字符串。我的代码看起来像这样:
def clock_degree(s):
hr, min = s.split(':')
if int(hr) > 12:
return str((int(hr)-12)*30)
elif int(hr) == 0:
return str((int(hr)+12)*30)
elif int(hr) > 24:
return "Check your time !"
elif int(hr) < 0:
return "Check your time !"
else:
return int(hr) * 30
def clock_degree_min(x):
hour, mn = x.split(':')
if int(mn) == 60:
return 360
elif int(mn) == 0:
return 360
elif int(mn) > 60:
return "Check your time !"
elif int(mn) < 0:
return "Check your time !"
else:
return int(mn) * 6
我如何能够实现这一目标的任何其他解决方案都是受欢迎的。提前谢谢。
答案 0 :(得分:1)
如果您在列表中有时间,那么您可以执行以下操作:
currentTimes = [] # Here's a list of times before the functions manipulate each element.
analogDialTimes = [(clock_degree(time), clock_degree_min(time)) for time in currentTimes]
这将返回一个元组列表,类似于摩西所建议的。
答案 1 :(得分:0)
我宁愿避免混合返回类型(这是异常的用途),并使用标准库函数进行常见操作,如解析时间(time.strptime):
import time
s="15:43"
t=time.strptime(s,"%H:%M")
pair = t.tm_hour*360/12, t.tm_min*360/60
如果您想将时针限制为一个转弯,请使用模t.tm_hour%12
,并将小时和分钟合并为一个平稳移动的时针(t.tm_hour+t.tm_min/60.0)
。
最后,关于如何处理该对,你说“将两个函数的结果组合成一个字符串”,但这并没有告诉我你想要它的格式。你能提供一个例子吗?
答案 2 :(得分:0)
def clock_degree(s):
hr, min = s.split(':')
hr = float(hr) + float(min)/60 # convert minutes to hours (ex : 30 min = 0.5h)
hr = hr % 12 # have a time between 0:00 and 12:00
angle = (360 / 12) * hr # calculate the angle (6h => 180°)
print(hr, angle)
return (hr, angle)
clock_degree('24:00')
clock_degree('12:00')
clock_degree('6:00')
clock_degree('24:30')
输出:
0.0 0.0
0.0 0.0
6.0 180.0
0.5 15.0
答案 3 :(得分:0)
我希望这样的东西更简洁:
def getDegrees(t):
h, m = [float(n) for n in t.split(":")]
result = []
for n, denominator in (h, 12), (m, 60):
result.append(str((n % denominator) / denominator * 360))
return ",".join(result)
对于分钟和秒,以最大值开始并使用它来获得模数(例如,22-> 10)然后除以它(6-> 0.5),然后乘以360。