在 Python 中用蒙面字母代替单词

40 阅读3分钟

您正在编写一个 Python 猜字游戏,需要设计一个函数来将单词用蒙面字母 (eg. ------) 替代。例如,如果单词是 “monkey”,程序应该显示 “------”,并且当用户猜测一个字母,例如 “k”,程序应该显示 “---k--”。需要注意的是,您必须以特定的方式编写代码,即必须有一个主函数,它将调用其他函数来完成所有工作,例如那些要求用户输入字母或检查猜测的单词是否正确的函数。您已经完成了所有函数,除了这个蒙面函数。此函数名为 maskWord(state, word, guess),您必须使用这些变量,但可以将它们传递给函数。state 是蒙面的单词 (eg.------),word 是要猜测的单词 (eg. monkey),guess 是用户猜测的字母。一旦函数更新了蒙面的单词,它应该返回 state。您还需要遵守以下规则:您不能创建全局变量,只能使用传递的变量。

  1. 解决方案:动态更新蒙面单词

以下是如何解决蒙面字母问题的 Python 代码:

def maskWord(state, word, guess):
    result = ''
    guessed = []
    character = ''
    for character in state:
        if not character == '-':
            if not character in guessed:
                guessed.append(character)

    if not guess in guessed:
        guessed.append(guess)

    for letter in word:
        if letter in guessed:
            result += letter
        else: 
            result += "-"

    # for debugging change to if True:
    if False:
        print('state %s' % state)
        print('word %s' % word)
        print('guess %s' % guess)
        print(guessed)

    return result

# Lets test if it works..:
import sys

word = "electricity"
state = ""
tries = 0

loop = True
while loop:
    if tries == len(word)*3: 
        print("Fail...")
        loop = False
    else:
        guess = input("Guess: ")
        tries +=1
        state = maskWord(state, word, guess)
        print(state)
        if maskWord(state, word, guess) == word:    
            print("WIN, WIN!!")
            loop = False

代码说明:

  • maskWord 函数:

    • 它接受三个参数:state(蒙面的单词)、word(要猜测的单词)和 guess(用户猜测的字母)。
    • 它首先定义了一个结果变量 result 来存储蒙面的单词,一个 guessed 列表来存储已经猜过的字母,一个 character 变量用于遍历 state。
    • 它然后遍历 state,并检查每个字符是否不是连字符 ('-')。如果是这样,它检查该字符是否不在 guessed 列表中。如果不是,它将该字符添加到 guessed 列表中。
    • 然后它检查 guess 是否不在 guessed 列表中。如果不是,它将 guess 添加到 guessed 列表中。
    • 然后它遍历 word,并检查每个字母是否在 guessed 列表中。如果是,它将该字母添加到 result 中。否则,它将连字符 ('-') 添加到 result 中。
    • 最后,它返回 result。
  • 主程序:

    • 它首先定义了 word(要猜测的单词)、state(蒙面的单词)和 tries(用于跟踪用户猜测的次数)变量。
    • 然后它创建一个 while 循环,该循环在 loop 变量为 True 时运行。
    • 在循环内部,它检查 tries 是否等于 word 中字母数量的三倍。如果是,它打印 "Fail..." 并将 loop 设置为 False 以退出循环。
    • 否则,它提示用户猜测一个字母并将其存储在 guess 变量中,然后将 tries 值加一。
    • 然后它调用 maskWord 函数来更新 state,并将结果存储在 state 中。
    • 然后它打印 state。
    • 最后,它检查 maskWord 函数返回的 state 是否等于 word。如果是,它打印 "WIN, WIN!!" 并将 loop 设置为 False 以退出循环。