Python 局部变量';x';分配前参考
我一直收到一个错误:Python 局部变量';x';分配前参考,python,Python,我一直收到一个错误: def main(): tests = get_initial_input(tests) assignments = get_initial_input(assignments) exercises = get_initial_input(exercises) labs = get_initial_input(labs) finals = get_initial_input(finals)
def main():
tests = get_initial_input(tests)
assignments = get_initial_input(assignments)
exercises = get_initial_input(exercises)
labs = get_initial_input(labs)
finals = get_initial_input(finals)
print(tests, assignments, labs)
def get_initial_input(x):
val = int(input("How many", x , "were there? "))
return val
main()
我尝试了很多不同的方法,试图让测试转到get\u initial\u input()
,但它说它是在赋值之前被引用的
当我试图定义第一行代码时,这怎么可能呢?当您使用:
UnboundLocalError: local variable 'tests' referenced before assignment
发生的第一件事是Python尝试对此进行评估:
tests = get_initial_input(tests)
但是测试
尚未定义,因此当您使用以下命令时,会出现未绑定的LocalError
:
UnboundLocalError: local variable 'tests' referenced before assignment
发生的第一件事是Python尝试对此进行评估:
tests = get_initial_input(tests)
但是,
测试
尚未定义,因此您会得到一个未绑定的LocalError
我想您是在尝试向函数传递一个字符串,该字符串在输入提示中使用。文字字符串总是用引号括起来
get_initial_input(tests)
如果您在函数参数中使用了正确的变量名(例如
label
),则调试起来会更容易。我认为您试图向函数传递一个字符串,该字符串在输入提示中使用。文字字符串总是用引号括起来
get_initial_input(tests)
如果您在函数参数中使用了正确的变量名(例如
label
),则调试会更容易。您正在将未分配变量测试传递给获取初始输入()
函数。因此,这就是您收到错误的原因
如果您需要x参数的get\u initial\u input()
函数中的默认值,请明确定义它:
tests = get_initial_input("tests")
在main()
中,为tests
无参数变量调用它:
def get_initial_input(x=5):
...
如果需要名称(例如,“多少个测试”
)-则向函数传递字符串,而不是cars:
tests = get_initial_input()
您正在将未分配变量测试传递给get\u initial\u input()
函数。因此,这就是您收到错误的原因
如果您需要x参数的get\u initial\u input()
函数中的默认值,请明确定义它:
tests = get_initial_input("tests")
在main()
中,为tests
无参数变量调用它:
def get_initial_input(x=5):
...
如果需要名称(例如,“多少个测试”
)-则向函数传递字符串,而不是cars:
tests = get_initial_input()
是的,但是调用get\u initial\u input(tests)
时,tests
不存在。你希望它打印什么?在tests=get\u initial\u answer(tests)
行之后,你才定义变量tests
,因此tests
在该行的执行过程中是未定义的。另外,作为一个旁注,我认为get\u initial\u input(tests)
,你的意思是get\u initial\u input(“tests”)
,和val=int(输入(“有多少”,x,“有多少?”)
asval=int(输入(“有多少”+x+”))
修改工作代码:谢谢Patrick,我忘记了引号,这就是我需要的。谢谢你,先生!是的,但是调用get\u initial\u input(tests)
时,tests
不存在。你希望它打印什么?在tests=get\u initial\u answer(tests)
行之后,你才定义变量tests
,因此tests
在该行的执行过程中是未定义的。另外,作为一个旁注,我认为get\u initial\u input(tests)
,你的意思是get\u initial\u input(“tests”)
,和val=int(输入(“有多少”,x,“有多少?”)
asval=int(输入(“有多少”+x+”))
修改工作代码:谢谢Patrick,我忘记了引号,这就是我需要的。谢谢你,先生!但这就是我想要定义测试的方式。我做过类似的事情,我不明白为什么它不起作用。对不起,Python不支持x=x
形式的递归变量定义。你需要把它定义为某种东西。也许您想使用字符串值而不是变量名?但这就是我想要定义测试的方式。我做过类似的事情,我不明白为什么它不起作用。对不起,Python不支持x=x
形式的递归变量定义。你需要把它定义为某种东西。也许您想使用字符串值而不是变量名?