2017-05-27 6 views
0

以下のプログラムは単語をリストに入れるべきです。それが動作するためのテストは 'print(allwords [1])'です。面白いのは、底部が機能することですが、私が上部を使用するときはそうではありません。リストは明らかに空のままです。私は何をやっているのですか?2つの非常によく似たobject.extend()のコードは、リストを埋めるために、1つは働きません

# DOES NOT WORK 
print ('On what difficulty do you want to play?\n') 
diffculty = input('1.Easy\n2.Medium\n3.Hard\n\n') 
if diffculty == 1 or input == 'Easy' or input == 'easy' or input == 'EASY': 
    with open('google-10000-english-usa-no-swears-short.txt') as inputfile: 
     for line in inputfile: 
      allwords.extend(line.strip().split(',')) 
elif diffculty == 2 or input == 'Medium' or input == 'medium' or input == 'MEDIUM': 
    with open('google-10000-english-usa-no-swears-medium.txt') as inputfile: 
     for line in inputfile: 
      allwords.extend(line.strip().split(',')) 
elif diffculty == 3 or input == 'Hard' or input == 'hard' or input == 'HARD': 
    with open('google-10000-english-usa-no-swears-long.txt') as inputfile: 
     for line in inputfile: 
      allwords.extend(line.strip().split(',')) 

# WORKS 
print ('Okay then, let us begin with your first word.\n') 
with open('google-10000-english-usa-no-swears-long.txt') as inputfile: 
    for line in inputfile: 
     allwords.extend(line.strip().split(',')) 

print (allwords[1]) 

問題は実際にはIF-ステートメントでした。私は2つの変更を加えましたが、今は動作します。 1. if文で文字列番号( '1')を確認しました 2. if変数を修正しました(すべてdiffcultyにする必要があります) ありがとうございました!

+0

if文を実行したコードは実行されますか?テストのためにそこに何かを印刷してみましたか? –

+0

それは非常に良い質問です。私はちょうどチェックした(それぞれ1,2,3の後にプリントを置く)。しかし、真剣に、彼らはなぜですか? –

+0

各if文の最初の比較が間違っています。あなたは文字列をintと比較しようとします –

答えて

1

変更if statement:あなたは、ユーザー入力から「すべて」の事態を考慮してほしい場合は、ような何かを行います。

if diffculty == '1' or input == 'Easy' or input == 'easy' or input == 'EASY': 

お知らせ1は今

input文字列をwithingされた文字列として保存され、あなたがintと比較しようとしているとそれを置く試してみてください。

また、@ zwerのように彼の答えでは、比較のためにユーザー入力を小文字に変換する方が良いです。したがって、同じ単語の複数の可能性を比較することについて心配する必要はありません。

print ('On what difficulty do you want to play?\n') 
diffculty = input('1.Easy\n2.Medium\n3.Hard\n\n') 

#The code below converts the user input to lower case. If example the user types 
# HARD or Hard or harD or something it converts it to 'hard' 

diffculty = diffculty.lower() 

print(diffculty) 

if diffculty == '1' or diffculty == 'easy': 
    print('easy') 
    #do your easy code 
elif diffculty == '2' or diffculty == 'medium': 
    print('medium') 
    #do your medium code 
elif diffculty == '3' or diffculty == 'hard': 
    print('hard') 
    #do your hard code 
else: 
    print('Please enter the correct difficulty level') 
+0

あなたの答えは私が前のコメントと同じ理由でそれを修正しました。ありがとうございました! –

+0

ようこそ。私の最近の編集を確認してください –

0

input()はあなたdifficulty == 1と同様のチェックを行う前に、int型に変換する必要があるので、あなたの文字列を与える:

difficulty = int(input('1.Easy\n2.Medium\n3.Hard\n\n')) 

あなたはいくつかの追加検証を追加したい場合があります。

また、input()は、input == 'Hard'が意味をなさないかどうかをチェックする関数です。

difficulty = input('1.Easy\n2.Medium\n3.Hard\n\n').lower() # turn input to lowercase 
if difficulty in ("1", "easy"): 
    # your easy code 
elif difficulty in ("2", "medium"): 
    # your medium code 
elif difficulty in ("3", "hard"): 
    # your hard code 
else: 
    # wrong input... 
+0

ゲームの難しさを変えるためのユーザー入力とされています。なぜそれが意味をなさないのか説明できますか? –

+0

@TomKisters - あなたは '難しい'変数の代わりに 'input'を' if'ステートメントのすべての結果的なチェックに使用していました( '難しい== '硬い'でなければなりません。 )。おそらくタイプミス。いずれにせよ、あなたはlikeのように比較する必要があるので、上記のように - 文字列のみを扱います。 – zwer

+0

私は以下の答えを使用しました。私が正しいとすれば、あなたが言及した問題も修正されます。助けてくれてありがとう! –

関連する問題