3 回答
TA贡献1780条经验 获得超1个赞
您需要return在函数中添加一条语句来捕获输出:
def compute_hours(hrs):
try:
float(hrs)
except:
hrs = -1
finally:
return hrs
new_hrs = compute_hours(hrs)
new_hrs 然后将存储来自 compute_hours
TA贡献1829条经验 获得超9个赞
您的函数缺少return语句,因此您不会从compute_hours. 看来您想要的是一个向用户询问数小时的函数,如果他们给您一个错误的值,则返回 -1。
def get_hours_from_user():
try:
return float(input('Enter Hours: '))
except ValueError:
return -1
计算工资作为一个需要小时和费率并返回工资的函数更有意义(不需要缩写,这只会增加阅读难度)。
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()
您在底部调用compute_pay使用一些变量rte,该变量在原始代码中的任何地方都不存在,我在此处为其添加一个常量:
RATE = 8.0
pay = compute_pay(hours, RATE)
print('Your pay is:', pay)
TA贡献1900条经验 获得超5个赞
float(hrs)不会改变 的值hrs。它将值转换为浮点数,但不对该值执行任何操作。您需要返回值。
def compute_hours(hrs):
try:
return float(hrs)
except:
return -1
然后你像这样使用它:
hrs = compute_hours(hrs)
但是如果用户输入了一个无效的小时数,你永远不会要求一个新的值,所以你的循环将是无限的。您需要再次提示。
while hrs == -1:
compute_hours(hrs)
if hrs == -1:
print(error_m)
hrs = input("Enter hourse: ")
添加回答
举报