Калькулятор возраста Собаки Ошибка с Неопределенным именем Python

#python #function #nameerror #undefined-variable

Вопрос:

Я пытаюсь создать программу, которая при вводе возраста собаки будет определять возраст в человеческих годах. Если введено отрицательное число, должно быть выведено, что отрицательное число недопустимо. Также, если ввод не является числом, он должен вывести, что ввод был неверным. мой код запускается в моем редакторе, однако в записной книжке 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) amp; (d_a <= 1):
        a = d_a * 15
    if d_a == 1:
        a = 15
    if (d_a > 1) amp; (d_a > 2):
        a = (d_a * 12)
    if d_a == 2:
        a = 24
    if (d_a > 2) amp; (d_a < 3):
        a = (d_a * 9.3)
    if d_a == 3:
        a = 27
    if (d_a > 3) amp; (d_a < 4):
        a = (d_a * 8)
    if d_a == 4:
        a = 32
    if (d_a > 4) amp; (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")
 

Комментарии:

1. Добро пожаловать в Stack Overflow! Пожалуйста, всегда публикуйте полное сообщение об ошибке с полной обратной связью .

2. Вы ничего не делаете с результатом round(a, 2) . Он не изменяет переменную на месте, он возвращает округленное значение. Так что это должно быть a = round(a, 2)

3. Я не понимаю сложности этого кода. Разве это не просто человеческие годы = 7 х собачьих лет?

4. Нет никаких причин dog_age , по которым следует быть неопределенным после того, как вы ответите на запрос ввода.

Ответ №1:

Если вы введете возраст от 1 до 2 лет, a не будет иметь никакого значения:

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

Кроме if d_a == 1: того, это уже охвачено предыдущим заявлением.

Наконец, как указал Суджей, логическим оператором в Python является and . amp; является побитовым оператором, который в вашем случае не нужен.

Комментарии:

1. and и нет amp; ?