Цель моего проекта - найти точные изменения, используя блоки принятия решений. Весь мой код возвращает правильные ответы, за исключением ответа, который ожидается как «Без изменений».

Решение выглядит как «Без изменений», как и ожидалось, но затем следует код ошибки, который заявляет

Traceback (most recent call last):
  File "main.py", line 21, in <module>
    if dollars == 1:
NameError: name 'dollars' is not defined

Есть идеи, почему это может быть? Код, который у меня есть ниже.

print("This program asks the user to enter a change amount using integers only,")
print("and outputs the change using the fewest coins.")
input_val = int(input("Enter the change amount as integer:"))



if input_val <= 0:
    print("No Change")

else: 
    dollars = input_val // 100
    input_val %= 100
    quarters = input_val // 25
    input_val %= 25 
    dimes = input_val // 10
    input_val %= 10
    nickels = input_val // 5
    input_val %= 5
    pennies = input_val


if dollars == 1:
    print('%d dollar' % dollars)
elif dollars > 1:
    print('%d dollars' % dollars)

if quarters > 1:
    print('%d quarters' % quarters)
elif quarters == 1:
    print('%d quarter' % quarters)

if dimes > 1:
    print('%d dimes' % dimes)
elif dimes == 1:
    print('%d dime' % dimes)

if nickels > 1:
    print('%d nickels' % nickels)
elif nickels == 1:
    print('%d nickel' % nickels)

if pennies > 1:
    print('%d pennies' % pennies)
elif pennies == 1:
    print('%d penny' % pennies)
0
Ellie Majeski 15 Окт 2019 в 04:22

1 ответ

Лучший ответ

Вам нужно объявить переменные перед их использованием.

В вашем коде переменные dollars, quarters, dimes, nickels, pennies не видны за пределами блока else

...
input_val = int(input("Enter the change amount as integer:"))

dollars = 0
quarters = 0
dimes = 0
nickels = 0
pennies = 0


if input_val <= 0:
    print("No Change")
...
0
Doc 15 Окт 2019 в 02:18