2016-08-27 26 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