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,“有多少?”)
as
val=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,“有多少?”)
as
val=int(输入(“有多少”+x+”))
修改工作代码:谢谢Patrick,我忘记了引号,这就是我需要的。谢谢你,先生!但这就是我想要定义测试的方式。我做过类似的事情,我不明白为什么它不起作用。对不起,Python不支持
x=x
形式的递归变量定义。你需要把它定义为某种东西。也许您想使用字符串值而不是变量名?但这就是我想要定义测试的方式。我做过类似的事情,我不明白为什么它不起作用。对不起,Python不支持
x=x
形式的递归变量定义。你需要把它定义为某种东西。也许您想使用字符串值而不是变量名?