3 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
該range()函數(shù)直到最后一個(gè)值才提交。您當(dāng)前的范圍應(yīng)該是(0,60),因?yàn)樵?59 之后,秒或分鐘會(huì)自動(dòng)更改為前一分鐘或下一秒,因此該值會(huì)更新為 0 而不是 60。因此正確的范圍是 (0,60 ),其中python 實(shí)際上不會(huì)考慮范圍內(nèi)的最后一個(gè)數(shù)字,而是考慮它之前的數(shù)字。
所以創(chuàng)造list(range(0,60))其實(shí)就是創(chuàng)造[0,1,2,...59]
另一個(gè)問(wèn)題是您應(yīng)該使用if語(yǔ)句而不是while循環(huán),因?yàn)槟M麅H當(dāng)數(shù)字在可接受的范圍內(nèi)時(shí)才執(zhí)行條件。
另外,我不明白你為什么要限制分鐘和秒。他們甚至可以超過(guò)60。
無(wú)論如何,這是代碼的工作版本:-
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貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
這是因?yàn)?strong>stop在range函數(shù)中是獨(dú)占的,意味著 range 函數(shù)給出的值將從start到stop-1
acceptable_range?=?list(range(0,60))

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
首先,您需要修復(fù) While 中的邏輯并通過(guò)加一來(lái)修復(fù)范圍(因?yàn)槲覀儚牧汩_(kāi)始)。
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
添加回答
舉報(bào)