如果一个字母出现多次,刽子手会多次打印这个单词

2024-06-02 06:17:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

目标词是“庆祝”。如果我猜是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()

免责声明:我在我的第一周的编码


Tags: importre目标inputifmaincountfunction
2条回答

不需要str()这个input(),它已经是一个字符串了。因此,将str(input("type a letter:"))剥离到input("type a letter:")

不需要

else:
    continue

即使没有它,它也会继续。不要使用global,只需将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")

你有:

print(random_pick_list_b)

在检查所选字母的每个字符的for循环内。因此,每次找到匹配项时,它都会打印出random_pick_list_b

如果要在检查完成后执行一次,请将其移动到for循环的右侧

我会在for循环之前进行一次检查

相关问题 更多 >