Scrabble拼字游戏Python代码排错:word_list字母未删除问题
错误原因
- 核心bug出在条件判断语句:代码中
if char == word_list:是将单个字符与整个列表做相等比较,该判断永远不成立,因此word_list中的元素永远不会被删除,无法得到正确结果。仅需要将该条件修改为if char in word_list:,即可完成核心逻辑修复。 - 原有字符串转列表的写法可以简化,直接用
rack_list = list(rack)、word_list = list(word)即可,和原有逻辑完全等价,代码可读性更高。
修复后完整代码
#Problem 1 # 输入获取 rack=input("what are the characters in your rack?: ") word=input("what word would you like to create?: ") # 转换为列表 rack_list = list(rack) word_list = list(word) # 遍历rack字符,移除word_list中匹配的字符 for char in rack_list: if char in word_list: word_list.remove(char) # 判断最终结果 can_make_word_bool = len(word_list) == 0 print(can_make_word_bool)
逻辑验证
修复后的代码可以正确处理重复字母场景:比如rack输入为aabcc,word输入为abac,遍历后word_list会被全部删除,返回True;如果word输入为aaa,最终word_list会剩余1个a,返回False,符合Scrabble拼字规则要求。
内容的提问来源于stack exchange,提问作者Mo yo
相关产品推荐
相关产品推荐

