You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

刽子手游戏开发:如何根据用户输入移除未猜字母集中的字符

修复Hangman游戏的可用字母获取函数

你的代码存在两个关键问题,导致无法正确返回未被猜测的字母:

  1. 循环提前终止:函数在for ch in ALL_LETTERS的第一次迭代就执行了return,不管后续字母是否被猜测,逻辑完全错误。
  2. 字符替换方式错误:ALL_LETTERS.replace(letters_guessed, '')是尝试替换整个letters_guessed子串,而不是逐个移除每个已猜测的字母。

正确实现代码

def get_available_letters(letters_guessed):
    """
    Returns a string of letters that have not yet been guessed.

    :param letters_guessed: letters that have been guessed so far by the player
    :type letters_guessed: str
    :return: letters that have not been guessed
    :rtype: str
    """
    ALL_LETTERS = 'abcdefghijklmnopqrstuvwxyz'
    letters_guessed = letters_guessed.lower()
    available_letters = []
    for ch in ALL_LETTERS:
        if ch not in letters_guessed:
            available_letters.append(ch)
    return ''.join(available_letters)

代码说明

  • 遍历全部26个小写字母,检查每个字母是否不在已猜测的字母集合中
  • 将未被猜测的字母存入列表,最后用join方法拼接成字符串返回
  • 统一将用户输入的字母转为小写,避免大小写不匹配的判断错误

简化实现(可选)

用生成器表达式结合集合可以提升判断效率,代码更简洁:

def get_available_letters(letters_guessed):
    """
    Returns a string of letters that have not yet been guessed.

    :param letters_guessed: letters that have been guessed so far by the player
    :type letters_guessed: str
    :return: letters that have not been guessed
    :rtype: str
    """
    ALL_LETTERS = 'abcdefghijklmnopqrstuvwxyz'
    guessed_set = set(letters_guessed.lower())
    return ''.join(ch for ch in ALL_LETTERS if ch not in guessed_set)

内容的提问来源于stack exchange,提问作者Learning_How_To_Code

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 12:55:20