创建一个Hangman游戏

时间:2020-06-10 16:48:02

标签: python python-3.x loops

我正在创建一个子手游戏,遇到了我似乎无法解决的问题。以下是我输入正确字母的代码:

            for i, l in enumerate(answer):
                if l == attempt:
                    temp += attempt
                else:
                    temp += hidden[i]
            print(F"Correct! You have {lives} lives left")
            print(temp)

返回:(答案为双工)

            duplex
            Guess a letter: x
            Correct! You have 5 lives left
            -----x

但是,当添加第二个输入时,它将打印第二个串联的字符串,而不是更新的字符串。

            Guess a letter: e
            Correct! You have 5 lives left
            -----x----e-
            Guess a letter: 

我在哪里错了?谢谢!

2 个答案:

答案 0 :(得分:0)

我认为您不希望连续添加到temp字符串,而是要在猜测时替换其特定字母。我还建议给它起一个比temp更好的名称!

visible = ["-"] * len(answer)

# now for each attempt, do:

    if attempt in answer and attempt not in visible:
        print(f"Correct! You have {lives} lives left")

    for i, l in enumerate(answer):
        if l == attempt:
            visible[i] = attempt

    print("".join(visible))

答案 1 :(得分:0)

问题隐藏了。在代码中,您发布的代码不会将用户输入添加到此数组中。因此隐藏永远不会改变。在正确的尝试范围内尝试hidden[i]=attempt。看起来应该像这样。

   for i, l in enumerate(answer):
                if l == attempt:
                    temp += attempt
                    hidden[i]=attempt
                else:
                    temp += hidden[i]
            print(F"Correct! You have {lives} lives left")
            print(temp)

在python中,字符串具有函数find,该函数返回字符串中子字符串的索引。它可以使您的代码更简洁。

index = answer.find(attempt,0)
if(index>0):
   hidden[index] = attempt
print(hidden)