[英]Why is my variable showing as “not defined”?
我已将输入变量设为数字,但仅当输入数字 2 时,它才会显示:
line 35, in <module>
if num_b == legal_num:
NameError: name 'num_b' is not defined"
我不确定为什么它会显示这一点。
print ("This is the popular 60's game Nim")
print ("The aim of the game is for you to get to zero")
nim_rules = ("Rules:", "The human always gets the luxury to start", "You can only take away 1, 2, or 3 in 1 turn", "As you know, the person who gets to zero wins")
for rules in nim_rules:
print (rules)
num_a = input ("Type your number: 1, 2, 3: ")
num_a = int(num_a);
legal_numbers = [1, 2, 3]
for legal_num in legal_numbers:
if num_a == legal_num:
C_num_a = 4 - num_a
print (f" I take away {C_num_a}")
num_b = input ("The number 8 is left. Choose your next number: ")
num_b = int(num_b);
if num_b == legal_num:
C_num_b = 4 - num_b
print (f"I take away {C_num_b}")
num_c = input ("The number 4 is left. Choose your next number: ")
num_c = int(num_c);
if num_c == legal_num:
C_num_c = 4 - num_c
print (f"I take away {C_num_c}")
print ("I win. Please Try again - You might win next time!")
else:
print ("Is that the number 1, 2, or 3? Try again. ")
您只定义num_b
当num_a == legal_num
。
您在此代码段中仅将变量“num_a”定义为全局变量:
num_a = input ("Type your number: 1, 2, 3: ")
num_a = int(num_a);
而num_b
和num_c
是在 if 条件下用局部范围定义的。
您需要全局定义这些变量。
num_a = input ("Type your number: 1, 2, 3: ")
num_a = int(num_a);
num_b = None;
num_c = None;
for legal_num in legal_numbers:
if num_a == legal_num:
C_num_a = 4 - num_a
print (f" I take away {C_num_a}")
num_b = input ("The number 8 is left. Choose your next number: ")
num_b = int(num_b);
..........
您只需num_b
初始化变量num_b
和num_c
。
你的程序被定义的方式,num_b 和 num_c 只有在num_a == legal_name
才会被定义
您可能需要重新访问 if 语句实现。
你想左缩进num_b
和num_c
输入语句吗?
为了帮助您,我在这些陈述之前添加了评论。
您的代码如下。 我使用 # 添加了评论
num_a = input ("Type your number: 1, 2, 3: ")
num_a = int(num_a);
legal_numbers = [1, 2, 3]
for legal_num in legal_numbers:
if num_a == legal_num:
C_num_a = 4 - num_a
print (f" I take away {C_num_a}")
#should the next two lines be left intend or go outside the for loop
num_b = input ("The number 8 is left. Choose your next number: ")
num_b = int(num_b);
if num_b == legal_num:
C_num_b = 4 - num_b
print (f"I take away {C_num_b}")
#should the next two lines be left intend or go outside the for loop
num_c = input ("The number 4 is left. Choose your next number: ")
num_c = int(num_c);
if num_c == legal_num:
C_num_c = 4 - num_c
print (f"I take away {C_num_c}")
print ("I win. Please Try again - You might win next time!")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.