将两根弦相互混合

问题描述 投票:0回答:1

我有一个程序,你会得到一个随机单词,你必须通过输入不同的字母来猜测它,它会说它是否在单词中以及在什么位置。但我似乎不知道如何将两个字符串相互重叠。例如,在我的代码中,这个错误不断发生:你有这个词:

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_

python
1个回答
0
投票

最初尝试你的代码时,我也得到了带有下划线和字母的奇怪结果,所以我后退一步尝试复制你的“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 !

再次强调,这只是众多可能的解决方案之一,但这应该值得深思。

© www.soinside.com 2019 - 2024. All rights reserved.