我是python中的新手。自从我2013年开始在大学学习以来,我正在努力学习python的工作原理。对不起,如果有点乱。
让我在下面展示我的问题。 我有一些def函数看起来像:
def thread_1():
a = input('Value UTS (100) = ')
if a > 100:
print line2
d=raw_input('Dont higher than 100. Input y to repeat : ')
d='y'
if d=='y' :
thread_1()
return a
def thread_2():
b = input('Value UAS (100) = ')
if b > 100:
print line2
d=raw_input('Dont higher than 100. Input y to repeat : ')
d='y'
if d=='y' :
thread_2()
return b
def thread_3():
c = input('Value Course (100) = ')
if c > 100:
print line2
d=raw_input('Dont higher than 100. Input y to repeat : ')
d='y'
if d=='y' :
thread_3()
def thread_4():
value_total = a*50/100+b*30/100+c*20/100
这个我的表达式def进入程序列表
if p==1:
thread_1()
thread_2()
thread_3()
thread_4()
最后,我运行这个程序: 只要我输入的数字很好,但最终程序显示的错误代码如下:
Traceback (most recent call last): File "ganjil-genap.py", line 71, in <module>
thread_4() File "ganjil-genap.py", line 36, in thread_4
value_total = a*50/100+b*30/100+c*20/100 NameError: global name 'a' is not defined
有谁能让我知道我做错了什么?
提前致谢。
答案 0 :(得分:0)
您可能忘记了thread_*
函数的参数。
例如,thread_4
函数声明需要如下所示:
def thread_4(a, b, c):
value_total = a*50/100+b*30/100+c*20/100
此外,您必须在函数调用中为函数提供参数,例如:
if p==1:
a=1, b=2, c=3
thread_1(a, b, c)
thread_2(a, b, c)
thread_3(a, b, c)
thread_4(a, b, c)
答案 1 :(得分:0)
您在thread_1上使用的变量a,b和c,thread_2和thread_3仅在这些函数内定义。 'a'仅在thread_1内部定义,b在thread_2内部定义,c在thread_3内定义,但是它们不是主程序的全局变量。声明
return a
仅返回变量a的值。
你应该让vaiables全球化。我认为它应该是这样的:
a=0
def thread_1():
global a
a= raW_input....
这会使你的a,b,c变量全局化。
然后在thread_4()中,a,b和c应作为函数的参数传递。
def thread_4(a,b,c):
我认为这应该有用。