Python 不工作的原因还没有确定?
由于某种原因,它不起作用,请帮忙Python 不工作的原因还没有确定?,python,Python,由于某种原因,它不起作用,请帮忙 import random def question(): OperatorChoice = random.randrange(1,2) if OperatorChoice == 1: Choice = ("+") else: Choice = ("-") Random1 = random.randrange(1,50) Random2 = random.randrange(1,50) print (
import random
def question():
OperatorChoice = random.randrange(1,2)
if OperatorChoice == 1:
Choice = ("+")
else:
Choice = ("-")
Random1 = random.randrange(1,50)
Random2 = random.randrange(1,50)
print (Random1, Choice, Random2)
question()
打印(随机1,选择,随机2)
NameError:未定义名称“Choice”
线路
<module>
print (Random1, Choice, Random2)
NameError: name 'Choice' is not defined
导致问题的原因是Choice
在全局范围(您尝试访问它的位置)中未定义。函数question()
在此之前定义,这并不重要
事实上,如果您在调用print()
之前调用了question()
,这种情况甚至不会改变,因为Choice
是question
的局部变量,因此在其外部是不可见的
更好的方法是定义以下函数:
print (Random1, Choice, Random2)
但无论如何,您不需要这样做:
只用
def question():
return "+" if random.randint(0,1) else "-"
您需要在打印()之前调用
question()
。否则,选项
在被引用后定义
除此之外,
question()
函数的第一行应该有global Choice
,因此Choice
是一个全局变量。而不是OperatorChoice=random.randrange(1,2)
,然后对它给出的数字进行运算,您只需使用OperatorChoice=random.choice(['+','-'])
我不太清楚您想用def question():
但您的问题是您在函数问题中定义了选项
。如果不这样做,您的代码将是:
random1 = random.randrange(1,50)
random2 = random.randrange(1,50)
choice = random.choice("+-")
print (random1, choice, random2)
我不确定这是否是您想要的,如果不是,请告诉我。您的缩进不正确-那些行(
Random1=…
到print(…)
)不在问题
功能范围内。您应该尝试选择一个能够提供有关您的问题的一些信息的标题。虽然技术上正确,那将是一个可怕的习惯。只有在绝对必要的情况下才能从函数内部设置全局变量。最好使用question()
返回选项
并将其分配给全局变量。
import random
OperatorChoice = random.choice(['+','-'])
Random1 = random.randrange(1,50)
Random2 = random.randrange(1,50)
print (Random1, OperatorChoice, Random2)