此“computepay”函数返回错误

2024-05-23 14:06:07 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个代码,当你输入小时数和费率时,计算出你的总资金。另外,如果你工作超过40小时,每多花一个小时,你就可以得到1.5倍的每小时工资。在

我的问题是我用以下代码定义了一个函数: 并使用命令提示符要求的computepay()运行它 “输入小时数” “输入费率”

然后它就退出了,没有吐出我想要的值。我完全没有编程,所以请帮助和耐心是感激。 谢谢您。在

def computepay():
    try: 
        int1 = raw_input("Enter Hours")
        h = float(int1)
        int2= raw_input("Enter Rate")
        r = float(int2)
    except:
        print "Error, please enter a numeric input"
        quit()
    if h >= 40:
        pay1 = 40 * r + (h - 40) * r * 1.5
        pay2 = h * r
        return pay1
    else:
        return pay2

Tags: 代码inputrawreturnfloat资金enter小时
3条回答

您没有为else条件分配pay2

if h >= 40:
    pay1 = 40 * r + (h - 40) * r * 1.5
    return pay1
else:
    pay2 = h * r
    return pay2

通过这种方式,您可以将其作为函数调用并打印函数返回值

如果没有print,则无法获得该值,因此使用print和pay2应在其他情况下进行计算

def computepay():
    try: 
        int1 = raw_input("Enter Hours")
        h = float(int1)
        int2= raw_input("Enter Rate")
        r = float(int2)
    except:
        print "Error, please enter a numeric input"
        quit()
    if h >= 40:
        pay1 = 40 * r + (h - 40) * r * 1.5

        return pay1
    else:
        pay2 = h * r
        return pay2
print computepay()

^{pr2}$

“然后它就退出了,没有吐出我想要的价值”。是的,但是如果你不在某处展示,你就看不到它。你需要:

def computepay():
   # your code here

pay = computepay()
print "your pay is", pay

现在你的代码有个错误:

^{pr2}$

您在if分支的第一部分中定义了pay2,但是尝试从第二个分支中返回它,因为它不存在。对于h<;40的任何值,此代码将引发一个NameError。你想要的是:

if h >= 40:
    pay1 = 40 * r + (h - 40) * r * 1.5
    return pay1
else:
    pay2 = h * r
    return pay2

可以简化为:

if h >= 40:
    return 40 * r + (h - 40) * r * 1.5
else:
    return h * r

你的代码也有一些错误(wrt/良好的编码实践):不应该在同一个函数中混合请求计算的值和执行计算本身,因为这不会使你的函数可测试(自动单元测试)或可重用(使用不同的用户界面)。“正确的方法”是拆分代码,将计算与调用的方式分离:

def computepay(h, r):
    if h >= 40:
        return 40 * r + (h - 40) * r * 1.5
    else:
        return h * r


def main():
    try: 
        int1 = raw_input("Enter Hours")
        h = float(int1)
        int2= raw_input("Enter Rate")
        r = float(int2)

    # only catch the expected errors
    except (ValueError, TypeError):
        print "Error, please enter a numeric input"
        quit()

    print computepay(h, r)

if __name__ == "__main__":
    main()

相关问题 更多 >