为什么 Python 3 在定义名称时给我一个名称错误?

Why is Python 3 giving me a name error when the name is defined?

我项目的目标是使用决策块找到确切的变化。我的所有代码都返回正确的答案,但预期结果为 "No Change".

的答案除外

解决方案如预期的那样 "No Change",但后面跟着一个错误代码,指出

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)

您需要在使用前声明变量。

在您的代码中,变量 dollars, quarters, dimes, nickels, pennieselse 块外不可见

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