首页 > 解决方案 > 狗年龄计算器 Python 未定义名称错误

问题描述

我正在尝试创建一个程序,当输入狗的年龄时,它会计算出人类的年龄。如果输入负数,则应打印负数无效。此外,如果输入不是数字,它应该打印输入无效。我的代码在我的编辑器中运行,但是在 jupyter 笔记本中,它挂在未定义的 dog_age 上。我不知道变量“a”是否也会有同样的问题。

dog_age = input("How old is your dog in years?")

try:
    d_a = float(dog_age)

    if d_a < 0:
        print(" Your input can not be negative! ")
    if (d_a >= 0) & (d_a <= 1):
        a = d_a * 15
    if d_a == 1:
        a = 15
    if (d_a > 1) & (d_a > 2):
        a = (d_a * 12)
    if d_a == 2:
        a = 24
    if (d_a > 2) & (d_a < 3):
        a = (d_a * 9.3)
    if d_a == 3:
        a = 27
    if (d_a > 3) & (d_a < 4):
        a = (d_a * 8)
    if d_a == 4:
        a = 32
    if (d_a > 4) & (d_a < 5):
        a = (d_a * 7.2)
    if d_a >= 5:
        a = (d_a * 7)
except ValueError as e:
    print("Your input was not valid")

round(a, 2)
a = str(a)

print("You inputted your dogs age as " + dog_age + " that is equal to " + a + " Human years old")

标签: pythonfunctionnameerrorundefined-variable

解决方案


如果您输入 1 到 2 之间的年龄,a 将没有任何值:

if (d_a > 1) & (d_a > 2):
        a = (d_a * 12)

此外if d_a == 1:,前面的陈述已经涵盖了。

最后,正如 Sujay 所指出的,Python 中的逻辑运算符是and. &是一个按位运算符,在您的情况下是不必要的。


推荐阅读