1

我是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

谁能让我知道我做错了什么?

提前致谢。

4

2 回答 2

0

您在 thread_1、thread_2 和 thread_3 上使用的变量 a、b 和 c 仅在这些函数内部定义。'a' 只在 thread_1 内定义,b 在 thread_2 内,c 在 thread_3 内定义,但它们不是主程序的全局变量。该声明

return a 

仅返回变量 a 的值。

你应该使变量全局化。我认为它应该是这样的:

a=0
def thread_1():
   global a
   a= raW_input....

这将使您的 a、b、c 变量成为全局变量。

然后在 thread_4() 中,a、b 和 c 应该作为函数的参数传递。

def thread_4(a,b,c):

我认为这应该有效。

于 2013-04-17T09:30:31.747 回答
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)
于 2013-04-17T09:15:05.213 回答