2016-04-04 15 views
0

私はPythonには新しく、それらを試してみる短いスクリプトを作ったので、私が出会った時にエラーが発生しました。次のようである"NameError:name is not defined"ユーザ入力用

Traceback (most recent call last): 
    File "/home/pi/Desktop/Scripts/classTest/classTest1.py", line 14, in <module> 
uN = input(str("Username")) 
    File "<string>", line 1, in <module> 
NameError: name 'ben' is not defined 

コード:

class user: 
    def __init__(self, usrName, pWord): 
     self.usrName = usrName 
     self.pWord = pWord 

    def createUsrPw(self): 
     f = open("usrName.txt", "a") 
     f.write(self.usrName) 
     f.write(" ") 
     f.write(self.pWord) 
     f.write("\n") 
     f.close() 

uN = input(str("Username")) 
pW = input(str("Password")) 

usr1 = user(uN, pW) 

usr1.createUsrPw() 

私はたくさんの前にx = input(str())構文を使用して、このエラーを持っていたことがない、と私が得る、ユーザによって入力されたstrとしてuNを定義しようエラーは1行目に戻りますので、uN = input(str("Username"))まだクラスの一部と考えられていますか?

私はそれが完璧に動作し、これにコードを簡素化:usrName.txtが意図したとおりに「ベンtestPw」を含めるように追加されるファイルと

class user: 
    def __init__(self, usrName, pWord): 
     self.usrName = usrName 
     self.pWord = pWord 

    def createUsrPw(self): 
     f = open("usrName.txt", "a") 
     f.write(usrName) 
     f.write(" ") 
     f.write(pWord) 
     f.write("\n") 
     f.close() 


usr1 = user("Ben", "testPw") 

usr1.createUsrPw() 

を。

+1

このエラーは '入力()' 'evalのように動作します'のpython-2.x'() 'のように見えます。あなたはpython 3だと確信していますか? – Lafexlos

+0

あなたはPython 3を使用していません。ここでPython 2を使用しています。通訳を確認してください。 –

+0

なぜあなたは 'input(str())'入力が必要なのですか?それがあなたの意図なら文字列を返す – danidee

答えて

1

Python 2.Xを使用している場合はinputの代わりにを使用してください。 Pythonの3

input作品は、このコードは動作します:

class user: 
    def __init__(self, usrName, pWord): 
     self.usrName = usrName 
     self.pWord = pWord 

    def createUsrPw(self): 
     f = open("usrName.txt", "a") 
     f.write(self.usrName) 
     f.write(" ") 
     f.write(self.pWord) 
     f.write("\n") 
     f.close() 

uN = raw_input("Username") 
pW = raw_input("Password") 

usr1 = user(uN, pW) 

usr1.createUsrPw() 
+0

ありがとうございました、ありがとうございました、私はPython 2を使用していたOPのコメントに指摘されました3、間違ったIDLEをクリックしている必要があります、恥ずかしいビット、私はPython 3を使用したので、チェック。私はそれが私にできるようになるとすぐにこれを最善の答えとします –

0

raw_inputを使用してください。これはPython 2エラーのように見えますが、私はPython 3を使用しているとは思わない

文字列リテラルでもstrを呼び出す必要はありません。 str( "asdf")== "asdf"

関連する問題