2017-02-14 11 views
0

Wie kann ich diesen Code arbeiten lassen, so dass der Benutzer seine Vermutungen in die Funktion eingeben kann, bis sie entweder das ganze Wort richtig erraten haben oder keine Leben mehr übrig sind? Im Moment kann der Benutzer nur eine Zeichenfolge eingeben, und dann endet die Schleife abrupt.Ich kann meinen Code nicht richtig loopen

secret_words_list = ['voldemort', 'hogwarts'] 
def hangman(): 
    lives = 5 
    while lives >= 0: 
     answer = random.choice(secret_words_list) 
     guess = raw_input('Write your answer here: ') 
     hangman_display = '' 
     for char in answer: 
      if char in guess: 
       hangman_display += char 
       lives -= 1 
      elif char == ' ': 
       hangman_display += char 
      else: 
       hangman_display += "-" 
       lives -= 1 
     if hangman_display == answer: 
      print("You win") 
    print(hangman_display) 
+2

vielleicht, weil Sie ein Leben für jeden char außer '' nehmen? – Julien

+0

Vielleicht können Sie dies sehen: caimaoy

+0

Für jeden Char-Check haben Sie ein Leben dekrementiert, stattdessen enthalten es nach der for-Schleife (einmal pro Iteration)? – Vinay

Antwort

0
import random 
secret_words_list = ['voldemort', 'hogwarts'] 
def hangman(): 
    lives = 5 
    while lives >= 0: 
     answer = random.choice(secret_words_list) 
     guess = raw_input('Write your answer here: ') 
     hangman_display = '' 
     for char in answer: 
      if char in guess: 
       hangman_display += char 
       #lives -= 1 
      elif char == ' ': 
       hangman_display += char 
      else: 
       hangman_display += "-" 
       #lives -= 1 
     if hangman_display == answer: 
      print("You win") 
      break 
     else: 
      lives -=1 
    print(hangman_display) 

hangman() 

din't ich Ihre genaue Anforderung verstehen, aber das ist, was Sie suchen?

Das Programm Interaktion war so etwas wie unten,

Write your answer here: vol 
-o------ 
Write your answer here: hog 
hog----- 
Write your answer here: hogwart 
hogwart- 
Write your answer here: hogwarts 
You win 
hogwarts 
0

Der Grund, warum es abrupt endet, weil es auf einem zeichenweise Basis Überprüfung ist nicht das ganze Wort überprüft dann die Entscheidung, ob die Vermutung falsch war.

Here's my code for this solution, documented so you can understand:

im Grunde eine Variable, die als Schalter wirkt, wenn Sie eine richtige Vermutung einschalten, haben Sie dann eine Prüfung nach der ‚für‘ Schleife, um zu sehen, ob ein Leben weg genommen werden muss oder nicht.

Sie können sehen, dass dies ist, was ich mit der 'richtigen' Variable, die ich vor der Schleife erstellen, tun, und überprüfen Sie Folgendes.

hoffe, das hilft^^ Connor

bearbeiten.

Ich werde diese ein wenig nach unten brechen, so dass es nicht eine riesige Müllhalde ist: P

Überprüfen Sie den Code, wenn Du kannst keinen Sinn daraus machen.

Sie erhalten eine Eingabe, testen, dass es ein Buchstabe ist, und tun Sie den Stick mit dem Display.

über jedes Zeichen Kontrolle ist ...

#we need to check if we need to take a life away 
correct = False 

Hier wird der ‚Schalter‘ ich darüber gesprochen wird erstellt, nur eine Boolesche Variable.

Hier, wenn das Zeichen vorher angezeigt wurde, werden wir es auf dem neuen Display anzeigen.

#if the character is in the guess, add it to the display. 
    elif char in guess: 
     display += char 
     #we made a correct guess! 
     correct = True 

Wenn der vermutete Charakter der Charakter ist, die wir zur Zeit an die Anzeige hinzufügen, werden überprüft, und drehen Sie den Schalter auf ‚True‘

#otherwise we need to add a blank space in our display. 
    else:    
     if char == ' ': 
      display += ' ' #space 
     else: 
      display += '_' #empty character 

Sonst nichts passiert ist, in einem Raum hinzufügen/leer und fahre mit der Schleife fort.

#if we didn't get a correct letter, take a life. 
if not correct: 
    lives -= 1 

Hier ist Were überprüfen wir die ‚Schalter‘, wenn es ‚True‘ ist, wissen wir nicht, ein Leben nehmen müssen,

Ansonsten ist der ‚Schalter‚False‘und wir nehmen ein Leben .

+0

Vielen Dank !!!!! –

Verwandte Themen