Wenn ich versuche, eine falsche Auswahl zu wählen, gab es mir den Fehler beim ersten Mal. Beim zweiten Mal startet der "Select level" -Block. Zum Beispiel, wenn ich die Wahl "12" eingib, gibt das Programm den Fehler zurück und bringt mich zur Auswahl, und diesmal gebe ich "13" ein und es wird der "Auswahl Level" -Block zurückgegeben. Ich muss eine Weile setzen oder was, um die Wahl immer zu bestätigen?Eingabefehler nur beim ersten Mal erkannt, zum zweiten Mal, wenn es gestartet wird
import random
import sys
choice = None
while choice != "0":
print('''
--------------------
Welcome to Hangman
--------------------
Please select a menu option:
0 - Exit
1 - Enter a new text file to be read:
2 - Play Game
''')
choice= input("Enter you choice: ")
if choice == "0":
sys.exit("Exiting from Python")
elif choice =="1":
while True:
try:
fileInput = input("Enter a new text file name: ")
List = open(fileInput).readlines()
break
except:
print ("\n Failed to open the file")
sys.exit()
elif choice == "2":
List = open("words_for_hangman.txt").readlines()
elif choice == " ":
choice = print("\n That is not a valit option! Please try again!")
choice = input("Choice:")
else:
choice = print("\n That is not a valid option! Please try again!")
choice = input("Choice: ")
print('''
Now select your difficulty level:
0 - EASY
1 - INTERMEDIATE
2 - HARD
''')
level= input("Enter your choice: ")
if level == "0":
word = random.choice(List)
word = word.strip()
hidden_word = "*" * len(word)
lives = 10
guessed = []
elif level == "1":
word = random.choice(List)
word = word.strip()
hidden_word = "*" * len(word)
lives = 7
guessed = []
elif level == "2":
word = random.choice(List)
word = word.strip()
hidden_word = "*" * len(word)
lives = 5
guessed = []
while lives != 0 and hidden_word != word:
print("\n-------------------------------")
print("The word is")
print(hidden_word.replace("_"," _ "))
print("\nThere are", len(word), "letters in this word")
print("So far the letters you have guessed are: ")
print(' '.join(guessed))
print("\n You have", lives,"lives remaining")
guess = input("\n Guess a letter: \n")
guess = guess.upper()
if len(guess) > 1:
guess = input("\n You can only guess one letter at a time!\n Try again: ")
guess = guess.upper()
elif guess== " ":
guess = input("\n You need to input a letter, not a space!\n Come on let's try again: ")
guess = guess.upper()
while guess in guessed:
print("\n You have already guessed that letter!")
guess = input("\n Please take another guess: ")
guess = guess.upper()
guessed.append(guess)
if guess in word:
print('''-------------------------------
''')
print("Well done!", guess.upper(),"is in the word")
word_so_far = ""
for i in range (len(word)):
if guess == str(word[i]):
word_so_far += guess
else:
word_so_far += hidden_word[i]
hidden_word = word_so_far
else:
print('''-------------------------------
''')
print("Sorry, but", guess, "is not in the word")
lives -= 1
if lives == 0:
print("GAME OVER! You have no lives left")
else:
print("\n CONGRATULATIONS! You have guessed the word")
print("The word was", word)
print("\nThank you for playing Hangman")
Ihr Fehler ist, dass wenn die Benutzereingabe falsch ist, Sie eine neue Eingabe nehmen, die wieder falsch sein könnte. Aber du kontrollierst das nicht. Ein guter Weg, um hier rauszukommen, besteht darin, die Schleife fortzusetzen, wenn die Benutzerwahl falsch ist. Siehe meine Antwort für Details. –