2017-01-11 17 views
5

私は単語推測ゲームを作ろうとしています。最後のif文部分以外はすべて動作します。ユーザーが正しく名前を推測すると、 "Won!"が印刷されません。しかし、そうでなければ、else文が実行され、 "Lost!"という印字が行われます。何故ですか?私は何度もそれをチェックしたが、何の誤りも見つけられなかった。なぜこのif文は実行されませんか?

注:私は、コードのこの部分ではPython 3.6

import random 

def get_random_word(): 
    words = ["Ronnie", "Deskty", "Lorrie"] 
    word = words[random.randint(0, len(words)-1)] 
    return word 

def show_word(word): 
    for character in word: 
     print(character, " ", end="") 
    print("") 

def get_guess(): 
    print("Enter a letter: ") 
    return input() 

def process_letter(letter, secret_word, blanked_word): 
    result = False 

    for i in range(0, len(secret_word)): 
     if secret_word[i] == letter: 
      result = True 
      blanked_word[i] = letter 

    return result 

def print_strikes(number_of_strikes): 
    for i in range(0, number_of_strikes): 
     print("X ", end="") 
    print("") 

def play_word_game(): 
    strikes = 0 
    max_strikes = 3 
    playing = True 

    word = get_random_word() 
    blanked_word = list("_" * len(word)) 

    while playing: 
     show_word(blanked_word) 
     letter = get_guess() 
     found = process_letter(letter, word, blanked_word) 

     if not found: 
      strikes += 1 
      print_strikes(strikes) 

     if strikes >= max_strikes: 
      playing = False 

     if not "_" in blanked_word: 
      playıng = False 


    if strikes >= max_strikes: 
     print("Lost") 
    else: 
     print("Won") 




print("Game started") 
play_word_game() 
print("Game over") 
+0

'strike'の値を' if'の前に表示します... –

+2

注:['random.choice(words)'](https://docs.python.org/3/library)を使うことができます。 /random.html#random.choice)を指定します。 – cat

答えて

8

ルックを使用します。

if not "_" in blanked_word: 
     playıng = False 

あなたはiの代わりにıU+0131 LATIN SMALL LETTER DOTLESS I)を持っています。 Pythonは(変数を宣言しなければならない他の言語とは異なり)うれしく、playıngという変数を作成します。したがって、playingは勝ちのケースではFalseに更新されず、関数は決して終了しません。

コメントでMartijnが指摘しているように、リンターはスペルミスの可能性のある変数や他の可能性のあるエラーを発見するのに役立ちます。エディタまたはIDEでの使用を検討してください。 2つの人気のあるリンターはPylintFlake8です。

+5

リストからランダムな値を取得するには、words [random.randint(0、len(words)-1)] ' Python 3のユニコード名のサポートは、実際にあなたのエディタでリンターを使用する必要性を家庭にもたらします。 –

関連する問題