我试图在Python中创建一个简单的刽子手游戏。我猜想,对于一个初学者,我已经走得很远了:)我唯一能做到的就是检查这个词是否真的被猜到了。我需要检查所有字母是否实际上都在我创建的列表中,但我不确定如何。 我确实知道有一个关于这个的话题,这对我没什么帮助。
import random
with open('randomlist.txt') as bestand:
woordenlijst = bestand.read().splitlines()
print("Welcome to Hangman.")
naam = input("What is your name? ")
print("Hello", naam, ", the computer selecter a secret word.")
woord = random.choice(woordenlijst)
lengte_woord = len(woord)
ingevoerde_letters = []
galg = []
i = 0
print("The length of the word is: \n")
while i < lengte_woord:
print("_", end=" ")
i = i + 1
levens = 0
invoer = " "
print(woord)
while levens <= 10:
letter = input("Letter: ")
if letter in ingevoerde_letters:
print("You already tried this letter.")
elif letter in woord:
print("This letter is in the word. We'll fill it in for you.")
i = 0
while i < lengte_woord:
if woord[i] == letter:
print(letter, end=" ")
ingevoerde_letters.append(letter)
i = i + 1
elif woord[i] in ingevoerde_letters:
print(woord[i], end=" ")
i = i + 1
else:
print("_", end=" ")
i = i + 1
else:
ingevoerde_letters.append(letter)
print("This letter is not in the word", galg[levens])
levens = levens + 1
print(galg[10], "\nGame over!")
答案 0 :(得分:0)
你拥有确定这一点所需要的大部分内容,虽然有更有效的方法可以完成你所做的事情(在Python中查看集合),但下面的工作正常:
# Somewhere towards the top of the script
total_letters_guessed = 0
...
while levens <= 10:
...
if woord[i] == letter:
print(letter, end=" ")
ingevoerde_letters.append(letter)
i = i + 1
total_letters_guessed += 1
...
# Before your loop ends
if total_letters_guessed == lengte_woord:
print("You won!")
答案 1 :(得分:0)
您的代码中存在一些问题。例如,当猜到一个错误的字母时,这封信永远不会被添加到你以后用来打印错误猜测的galg列表中。因此要么用ingevord_letter替换galg,要么将字母添加到ingevord_letter和galg中。像这样:
else:
ingevoerde_letters.append(letter)
galg.append(letter)
第二个问题出在您的阅读文件中。当你说.splitline()时,你会让woord包含整行(或者包含在\ n之间的所有内容)。我想你想要.split()来从文本中选择1个随机单词。
对于你的实际问题,在成功猜测后完成游戏的一种方法是检查字母集合中的字母集合。请参阅isWon函数。 ref this answer
import random
def isWon(mysteryWord, lettersGuessed):
return set(lettersGuessed) == set(mysteryWord)
with open('randomlist.txt') as bestand:
woordenlijst = bestand.read().splitlines()
print("Welkom bij Galgje, voor we beginnen willen we graag het volgende aan je vragen.")
naam = input("Wat is je naam? ")
print("Hallo", naam, ", leuk dat je wilt spelen. De computer heeft een willekeurig woord voor je geselecteerd.")
woord = random.choice(woordenlijst)
lengte_woord = len(woord)
ingevoerde_letters = []
galg = []
i = 0
print("De lengte van het woord is: \n")
while i < lengte_woord:
print("_", end=" ")
i = i + 1
levens = 0
invoer = " "
print(woord)
while levens <= 10:
letter = input("Geef een letter: ")
if letter in ingevoerde_letters:
print("Deze letter heb je al ingevoerd.")
elif letter in woord:
print("Deze letter zit in het woord. We vullen het voor je in.")
i = 0
while i < lengte_woord:
if woord[i] == letter:
print(letter, end=" ")
ingevoerde_letters.append(letter)
i = i + 1
elif woord[i] in ingevoerde_letters:
print(woord[i], end=" ")
i = i + 1
else:
print("_", end=" ")
i = i + 1
else:
ingevoerde_letters.append(letter)
galg.append(letter)
print("Deze letter zit niet in het woord", galg[levens])
levens = levens + 1
if (isWon(ingevoerde_letters, woord)):
#successfull code here
break
print(galg, "\nGame over!")