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
添加回答
舉報