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)