2016-08-27 5 views
1

文字列入力(y/n)を整数(1/0)に変換しようとしています。 'a'を引数として 'convert'関数を実行したときに引数が関数内に出力されるように関数が動作しているように見えますが、関数の外側には変数 'a'の元の値が使用されます。私は '変換'関数内のリターンを使用しようとしましたが、これは影響しないようです。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を一切変更していないためです。 aconvertメソッドに渡すだけですが、これは実際にはに変更されます。は、aにあります。 aを変更するには、convertの結果にaを割り当てる必要があります。このように:あなたが実際にaが今保持するものの値を変更するためにconvert方法から何かを返す必要があるため、あなたが、returnことを必要とする場所

a = 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

関連する問題