亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

范圍定義不正確

范圍定義不正確

慕仙森 2023-09-05 15:25:27
當我輸入時to_float_hours(0,1,0)它會返回一個值,但當我輸入時to_float_hours(0,0,1)它不會返回一個值。此外,如果我輸入to_float_hours(0,61,0)它會返回一個值,而當我輸入時to_float_hours(0,1,59)它不會。為什么分鐘的范圍是大于 1 的值,而秒的范圍是 0 到 58 之間的值?我希望該函數僅在分鐘和秒的輸入都在 0 到 59 之間(包括 0 到 59)時返回一個值。def to_float_hours(hours, minutes, seconds):    acceptable_range = list(range(0,59))    while minutes and seconds in acceptable_range:        hours = hours        minutes = minutes/60        seconds = seconds/3600        total = hours+minutes+seconds        return total
查看完整描述

3 回答

?
慕婉清6462132

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


查看完整回答
反對 回復 2023-09-05
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

這是因為stop在range函數中是獨占的,意味著 range 函數給出的值將從startstop-1

acceptable_range?=?list(range(0,60))


查看完整回答
反對 回復 2023-09-05
?
慕后森

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


查看完整回答
反對 回復 2023-09-05
  • 3 回答
  • 0 關注
  • 162 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號