首页 > 解决方案 > 如果一个字母出现多次,Hangman 会多次打印单词

问题描述

我正在构建一个刽子手游戏。如果一个字母出现多次,我编写的代码会多次打印“更新的目标词”。

示例:目标词是“庆祝”。如果我猜e那么它会打印

*e******
*e*e****
*e*e***e

我想避免打印前两个打印输出,只打印第三个和最新版本。

import random
import re

word_list = ["fireboard", "identical", "chocolate", "christmas", "beautiful", "happiness", "wednesday", "challenge", "celebrate"]

random_pick = random.choice(word_list)
random_pick_a = re.sub("[a-z]","*", random_pick)
random_pick_list_a = list(random_pick_a)
print(random_pick)
count = 0


def main_function():
    global count
    while count <= 9:
        user_input = str(input("type a letter:"))
        for i, c in enumerate(random_pick):
            if c == user_input.casefold():
                random_pick_list_a[i] = user_input.casefold()
                random_pick_list_b = ''.join(random_pick_list_a)
                print(random_pick_list_b)
                if random_pick_list_b == random_pick:
                    print("done")
                    exit()
                else:
                    continue
        else:
            if user_input.casefold() not in random_pick:
                count = count+1
                print(count)
                if count == 10:
                    print("sorry")
                    exit()


main_function()

免责声明:我正处于编码的第一周!

标签: pythonpython-3.x

解决方案


不需要str()input()它已经是一个字符串。所以剥离str(input("type a letter:"))input("type a letter:").

不需要在

else:
    continue

即使没有它,它也会继续。不要使用globals,只需将您的count移入main_function().

不要做if count == 10,你已经在做while count <= 9

至于你的问题 - 移动块

print(random_pick_list_b)
if random_pick_list_b == random_pick:
    print("done")
    exit()

出for循环。所以整个事情看起来像这样:

def main_function():
    count = 0
    while count <= 4:
        user_input = input("type a letter:")
        for i, c in enumerate(random_pick):
            if c == user_input.casefold():
                random_pick_list_a[i] = user_input.casefold()
                random_pick_list_b = ''.join(random_pick_list_a)
        print(random_pick_list_b)
        if random_pick_list_b == random_pick:
            print("done")
            exit()
        else:
            if user_input.casefold() not in random_pick:
                count = count+1
                print(count)
    print("sorry")

推荐阅读