我有一个程序,你会得到一个随机单词,你必须通过输入不同的字母来猜测它,它会说它是否在单词中以及在什么位置。但我似乎不知道如何将两个字符串相互重叠。例如,在我的代码中,这个错误不断发生:你有这个词:
apple
。你猜到了字母p
。所以你得到一个输出 _pp__
,然后你猜字母 l
,但不是说 _ppl__
,而是说 _pp_____l_
。
这是代码:
while True:
Woord = input('Wat wil je dat het galgje woord wordt: ')
correct = 0
superCorrect = len(Woord)
count = 0
gokjes = 8
dood = 0
geraden_letters = ''
letterNieuw = ''
for i in range(20):
print("")
x = len(Woord)
for i in range(x):
print("_",end=' ')
for i in range(2):
print("")
for i in range(gokjes):
letter = input('Gok een letter: ')
if letter == "":
exit()
else:
if letter in Woord:
count = Woord.count(letter)
print('Correct')
for char in Woord:
if char == letter:
geraden_letters += char
correct = correct + 1
else:
geraden_letters += '_'
print(geraden_letters)
if correct == superCorrect:
print('Het woord was ... ', geraden_letters.upper(),'!')
exit()
else:
print('Incorrect')
print(letter)
dood = 1
if dood == 1:
print('Het galgje is dood')
print("")
尝试了字母 p,得到了输出
_pp___
,然后尝试了字母 l,预期输出为 _ppl_
,但得到了 ___l_
。
最初尝试你的代码时,我也得到了带有下划线和字母的奇怪结果,所以我后退一步尝试复制你的“Hangman”程序的精神。在看过“Hangman”游戏的许多变体后,我开始设置一个列表,最初包含与输入单词/解决方案中的字母相同数量的下划线字符。然后,在进行猜测时,当猜测到正确的字母时,列表中的下划线将被替换。
因此,以下是符合项目精神的代码的重构版本。
Guess = [] # Use a list to contain the underscore and letters
while True:
Woord = input('What do you want the hangman\'s word to be?: ')
correct = 0
superCorrect = len(Woord)
for i in range(superCorrect):
Guess.append('_') # Create a list of underscores as long as the word
count = 0
gokjes = 8
dood = 0
for i in range(gokjes):
letter = input('Guess a letter: ')
if letter == "":
exit()
else:
if letter in Woord:
count = Woord.count(letter)
print('Correct')
for i in range(len(Woord)):
if Woord[i] == letter:
Guess[i] = letter # Replace the underscore with the entered letter
correct = correct + 1
if correct == superCorrect:
print('The word was ... ', Woord,'!') # Just print the word if guessed correctly
exit()
else:
print('Incorrect')
print(letter)
dood = 1
for i in range(len(Woord)): # Print out the current list of characters
print(Guess[i], end=' ')
print()
if dood == 1:
print('The hangman is dead')
print("")
重点如下
以下是显示终端输出的测试运行。
craig@Vera:~/Python_Programs/Hangman$ python3 Beul.py
What do you want the hangman's word to be?: apple
Guess a letter: p
Correct
_ p p _ _
Guess a letter: e
Correct
_ p p _ e
Guess a letter: l
Correct
_ p p l e
Guess a letter: a
Correct
The word was ... apple !
再次强调,这只是众多可能的解决方案之一,但这应该值得深思。