2016-08-27 31 views
1

我试图将字符串输入(y/n)转换为整数(1/0)。该函数似乎正在工作,因为当使用'a'作为参数执行'convert'函数时,该参数将打印在该函数内部,但是在该函数之外的打印使用变量'a'的原始值。我试过在'convert'函数中使用return,但这似乎没有任何影响。Python:执行后没有保存变量值的函数

a = input("Are you happy?(y/n)") 

def convert(x): 
    if x == ('y'): 
     x = 1 
    if x == ('n'): 
     x = 0 
    print (x) 

convert(a) 
print (a) 

>>> Are you happy?(y/n)y 
1 
y 
+1

请必须通过http://nedbatchelder.com/text/names读。 html。这种语言与你所期望的有着根本的不同,这将清除*所有*。 –

回答

3

那是因为你根本没有改变a。您只是简单地将a传递给convert方法,但实际上并不会更改什么是a。为了更改a,您需要将a分配给convert将执行的操作的结果。就像这样:

a = convert(a) 

这是现在,你将需要return,因为你必须真正从convert方法,以改变什么a现在持有价值回报的东西。

因此,采取一切,在交代,你会现在有:

a = input("Are you happy?(y/n)") 
def convert(x): 
    if x == ('y'): 
     x = 1 
    if x == ('n'): 
     x = 0 
    print (x) 
    # add the return here to return the value 
    return x 

# Here you have to assign what the new value of a will be 
a = convert(a) 
print(a) 

输出:

1 
1 
+0

非常好的答案! – Li357