3 回答
TA贡献1804条经验 获得超2个赞
该range()函数直到最后一个值才提交。您当前的范围应该是(0,60),因为在 59 之后,秒或分钟会自动更改为前一分钟或下一秒,因此该值会更新为 0 而不是 60。因此正确的范围是 (0,60 ),其中python 实际上不会考虑范围内的最后一个数字,而是考虑它之前的数字。
所以创造list(range(0,60))其实就是创造[0,1,2,...59]
另一个问题是您应该使用if语句而不是while循环,因为您希望仅当数字在可接受的范围内时才执行条件。
另外,我不明白你为什么要限制分钟和秒。他们甚至可以超过60。
无论如何,这是代码的工作版本:-
def to_float_hours(hours, minutes, seconds):
acceptable_range = list(range(0,60))
if seconds in acceptable_range and minutes in acceptable_range:
hours = hours
minutes = minutes/60
seconds = seconds/3600
total = hours+minutes+seconds
return total
TA贡献1851条经验 获得超5个赞
这是因为stop在range函数中是独占的,意味着 range 函数给出的值将从start到stop-1
acceptable_range = list(range(0,60))
TA贡献1802条经验 获得超5个赞
首先,您需要修复 While 中的逻辑并通过加一来修复范围(因为我们从零开始)。
def to_float_hours(hours, minutes, seconds):
acceptable_range = list(range(0,60))
while minutes in acceptable_range and seconds in acceptable_range:
hours = hours
minutes = minutes/60
seconds = seconds/3600
total = hours+minutes+seconds
return total
添加回答
举报