2017-03-20 21 views
0

私はPythonとプログラミングには新しく、このコードスニペットの動作を助ける助言をしたいと思います。Pythonのbabynamesプロジェクトでユーザー入力を検証しようとしています

プログラム全体が、赤ちゃんの名前とそのランキングの2つのテキストファイルを検索します。最初のtry/except文は必要に応じて機能しますが、2番目のtry/except文は私にいくつかの問題を与えています。

検索を開始するファイルを特定するには、ユーザーに 'boy'または 'girl'のどちらかを入力する必要があります。ユーザーが少年または少女以外のもののスペルミスを入力すると、「無効な性別」というエラーが表示されます。それが今であるように、私は(最後の最新の呼び出し)以下のerror--

トレースバックを取得しています:

ファイル "C:/ユーザー/ドリュー/ドキュメント/ CIT 144/babynames.py"、14行目、 に入力が==少年場合:

NameError:名「男の子」が

が定義されていない私は完全に次の何をすべきかで失われた、私は「少年の名前を定義する必要があります知っているのですが、私はやりますどこでどのように行うのか分かりません。

ご協力いただきありがとうございます。

try: 
    boyfile = open("boynames2014.txt", "r") 
    girlfile = open("girlnames2014.txt", "r") 

except IOError: 
    print("Error: file not found") 




try: 
     gender = input("Enter gender (boy/girl): ") 
     if input == boy: 
      print("Enter name to search for: ",name) 
     if input == girl: 
      print("Enter name to search for: ",name) 



except IOError: 
    print("Invalid gender") 

答えて

2

boyおよびgirlは文字列である必要があります。

if input == "boy": 
     ... 
    if input == "girl": 
     ... 

この比較では、IOErrorが発生する可能性があるため、この例外をキャッチしないでください。あなたはリテラルに対して比較している

try: 
    gender = input("Enter gender (boy/girl): ") 
    if input == "boy": 
     print("Enter name to search for: ",name) 
    if input == "girl": 
     print("Enter name to search for: ",name) 

+0

素晴らしいですが、エラーを発生させる方法はありますか?男の子や女の子以外のことがあれば、それを捕まえる必要があります。 –

+0

IOErrorを上げるのは適切な方法ではありません。 'if/elif/else'を使うべきです。 –

+1

「gender = "boy" print( "名前を入力.... .... elif gender = girl print("名前を入力...その他:印刷(無効... –

0

は、この方法を試してみてください。テキストリテラルは引用符で囲む必要があります。

関連する問題