3 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個贊
您需要return在函數(shù)中添加一條語句來捕獲輸出:
def compute_hours(hrs):
try:
float(hrs)
except:
hrs = -1
finally:
return hrs
new_hrs = compute_hours(hrs)
new_hrs 然后將存儲來自 compute_hours

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個贊
您的函數(shù)缺少return語句,因此您不會從compute_hours. 看來您想要的是一個向用戶詢問數(shù)小時的函數(shù),如果他們給您一個錯誤的值,則返回 -1。
def get_hours_from_user():
try:
return float(input('Enter Hours: '))
except ValueError:
return -1
計算工資作為一個需要小時和費(fèi)率并返回工資的函數(shù)更有意義(不需要縮寫,這只會增加閱讀難度)。
def compute_pay(hours, rate):
return hours * rate
您可以大大簡化錯誤檢查,但最好將此邏輯放在 get_hours_from_user
hours = get_hours_from_user()
while hours == -1:
print('invalid value for hours')
hours = get_hours_from_user()
您在底部調(diào)用compute_pay使用一些變量rte,該變量在原始代碼中的任何地方都不存在,我在此處為其添加一個常量:
RATE = 8.0
pay = compute_pay(hours, RATE)
print('Your pay is:', pay)

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個贊
float(hrs)不會改變 的值hrs。它將值轉(zhuǎn)換為浮點(diǎn)數(shù),但不對該值執(zhí)行任何操作。您需要返回值。
def compute_hours(hrs):
try:
return float(hrs)
except:
return -1
然后你像這樣使用它:
hrs = compute_hours(hrs)
但是如果用戶輸入了一個無效的小時數(shù),你永遠(yuǎn)不會要求一個新的值,所以你的循環(huán)將是無限的。您需要再次提示。
while hrs == -1:
compute_hours(hrs)
if hrs == -1:
print(error_m)
hrs = input("Enter hourse: ")
添加回答
舉報