Python无法将输入的猜测字母保存到列表变量,该如何处理?
猜字母逻辑代码问题修复
问题根因
- 代码执行顺序错误:
old_letters_guessed.append()、打印列表的逻辑放在了所有return分支之后,函数执行到return就会直接终止,这两行代码永远不会被触发,自然无法存储新猜的字母。 - 逻辑顺序错误:需要先完成有效字母的存储,再返回布尔结果,不能先返回再执行存储操作。
- 额外的拼写问题:原函数注释里的参数名
letter_guesses和实际定义的参数letter_guessed不一致,已同步修正。
修正后代码
letter_guessed = input("please guess a letter").lower() old_letters_guessed = [] def check_valid_input(letter_guessed, old_letters_guessed): """ 这个函数会检查输入的猜测是否符合规则 :param letter_guessed: 用户输入的猜测字母 :type letter_guessed: str :param old_letters_guessed: 已经猜过的字母列表 :type old_letters_guessed: list :return: 猜测符合规则返回True,否则返回False :rtype: bool """ if letter_guessed.isalpha() and len(letter_guessed) == 1 and letter_guessed not in old_letters_guessed: # 验证通过后先存入已猜列表,再返回结果 old_letters_guessed.append(letter_guessed) print(old_letters_guessed) return True else: return False check_valid_input(letter_guessed, old_letters_guessed)
补充说明
列表属于Python可变对象,函数内部对传入的列表执行append操作,会直接修改全局的old_letters_guessed变量,不需要额外返回列表就能同步存储结果。如果需要实现多次循环猜测,把用户输入、函数调用的逻辑放到循环结构中即可。
内容的提问来源于stack exchange,提问作者shalev haba
相关产品推荐
相关产品推荐

