2017-10-25 14 views
0

は、私は、変数が入力変数と同じかどうかをチェックするためのスクリプトを作った:私は、入力用の文字を入力するたびにしかし、それはNameErrorをスローNameError使用して入力のPython 2.7

def password(): 
    userPassword = str(input("Type Your Password: ")) 
    if userPassword == storedPassword: 
     print 'Access Granted' 
    else: 
     print 'Access Denied' 
     password() 

が、それは数字でうまく動作します。

エラー:Pythonの2.7の場合

Traceback (most recent call last): 
    File "C:\Users\***\Desktop\Test\Script.py", line 16, in <module> 
    password() 
    File "C:\Users\***\Desktop\Test\Script.py", line 9, in password 
    userPassword = str(input("Type Your Password: ")) 
    File "<string>", line 1, in <module> 
NameError: name 'f' is not defined 
+0

誰でもあなたを助けることができるようにするには、質問のインデントを修正する必要があります。 –

+0

おっと、ありがとうございました:) –

+0

私のマシンでうまく動作しています。 – 0TTT0

答えて

1

あなたは、あなたがそれを渡すどんなevaulateするinput試みを使ってPython 2.

raw_inputの代わりinputを使用する必要があります参照してください。整数の場合、それはその整数に分解されます。文字列の場合、変数名を見つけようとしますが、それはエラーを引き起こします。

あなたの入力呼び出しを持つパスワードのような「パスワード」を入力することで確認できます。password関数への参照を返します。

逆に、raw_inputは、ユーザーが入力した文字を含む文字列を常に返します。ユーザーが文字列に入力したものをキャストしようとしたことで判断すると、これはまさにあなたが望むものです。

+0

ありがとう!それは動作します:) –

+0

私はそれを聞いてうれしい:)あなたの問題を解決した場合、私の答えを受け入れたとマークしてください。 – Shadow

関連する問題