2017-10-10 11 views
-1

Je suis novice en programmation python. Je voudrais afficher un message de victoire après chaque entrée de lettre correcte et aucun message si une lettre incorrecte est entrée.Implémentez une boucle while dans mon jeu de type hangman/puzzle

J'ai écrit mon code de sorte qu'il n'accepte qu'une lettre à la fois et réduise une tentative de 1, qu'elle soit incorrecte ou correcte.

Comment pourrais-je être en mesure de mettre en œuvre une boucle while en cela pour que je ne garde pas à obtenir cette erreur:

builtins.TypeError: 'str' object does not support item assignment

word="banana" 
word_list=list(word) 
length=len(word_list) 
word_list= set(word_list) 
word_list=list(word_list) 
answer=["_"]*length 
answer=list(answer) 
guess=[] 
count = 4 
    win=False # boolean so we do not use an identifier in our if statements  
    user_guess=window.input_string("Guess a letter: ", x, y) 
    y = y + font_height 
    guess.append(user_guess) 
    while count > 0: 
     # Removes guesses if they are not in the word so that the blanks do not fill in with incorrect letters 
     for letter in guess: 
      if letter not in word_list: 
       guess.remove(letter) 
      else: 
       win=True 
     # Replaces blanks in empty list with the letter guess 
     for place,letter in enumerate(list(word)): 
      for i in range(len(guess)): 
       if letter == guess[i]: 
        answer[place]=guess[i] 
     answer=" ".join(answer) 
     update_message = 'The answer so far is: ' 
     window.draw_string(update_message + answer,x,y) 
     y = y + font_height 
    #End Game 
    win_message = 'Good job! You got the word.' 
    lose_message = 'Not quite, the correct word was: '+word +' Better luck next time' 

    if win: 
     window.draw_string(win_message,x,y) 
     y = y + font_height 
     count -=1 
    else: 
     window.draw_string(lose_message,x,y) 
     y = y + font_height 
     count -=1 
+0

Quelle bibliothèque utilisez-vous? Ne ressemble pas à pygame. Veuillez fournir un [exemple minimal, complet et vérifiable] (https://stackoverflow.com/help/mcve). – skrx

Répondre

1

S'il vous plaît notez cette mission: answer=" ".join(answer). Avant l'affectation, answer est une liste de chaînes. Après l'affectation, answer devient une chaîne. Ainsi, lors de la prochaine itération de la boucle while, answer[place]=guess[i] devient invalide, car python ne permet pas de modifier une chaîne en affectant un "caractère" à un endroit de la chaîne.

Il faut vraiment du temps pour trouver la panne. Vous feriez mieux de fournir l'information, par exemple, «quelle ligne du programme a ciblé le message d'erreur», lorsque vous posez des questions à l'avenir.