Def函数python:raw_input not store

时间:2013-04-17 09:13:07

标签: python input raw-input

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

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

提前致谢。

2 个答案:

答案 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):

我认为这应该有用。