为了账号安全,请及时绑定邮箱和手机立即绑定

即使我调用它们,我的函数也没有执行

即使我调用它们,我的函数也没有执行

有只小跳蛙 2021-09-28 15:38:39
我正在构建一个非常简单的代码(我是初学者,只是了解 Python 的基础知识),它通过将费率乘以小时(均由用户输入)来计算工资。我已经成功地一遍又一遍地复制和粘贴相同的代码(输出按预期运行)。我试图通过将代码放在函数上来简化和缩短脚本来减少工作量。然而,当我这样做时,一切似乎都在走下坡路。输入被询问和接收,但是当确定错误和浮动数字输入的函数应该运行时,它没有。#computation of final paydef compute_pay(hrs,rte):    pay = hrs*rte    print(pay)#computation of hours; it's pretty much the same for rate; only variables #changehrs = input("Enter Hours: ")def compute_hours(hrs):    try:        float(hrs)    except:        hrs = -1compute_hours(hrs)if hrs == -1:    print(error_m)while hrs == -1:    compute_hours(hrs)    if hrs == -1:        print(error_m)#endcompute_pay(hrs,rte)我期望计算实际工资,但我得到了一个类型错误,因为在#end 中,乘法是在字符串之间进行的,而不是变量“hrs”和“rte”的数值。发生这种情况不是因为我没有建立变量的类型,而是因为包含它的函数没有运行。
查看完整描述

3 回答

?
慕神8447489

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


查看完整回答
反对 回复 2021-09-28
?
PIPIONE

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)


查看完整回答
反对 回复 2021-09-28
?
梵蒂冈之花

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: ")


查看完整回答
反对 回复 2021-09-28
  • 3 回答
  • 0 关注
  • 212 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信