Hangman游戏开发:如何让最后一个elif执行以添加未存在字符到数组
Hangman游戏猜字母逻辑修复
问题根源
你写的最后一个elif永远跑不起来,因为range(len(array))生成的索引是从0到数组长度减一。比如你数组长度是5,i只会是0、1、2、3、4,永远到不了5(也就是len(array)的值),所以这个条件根本触发不了。另外第二个elif里的i < len(array)完全多余,循环本身就限制了i的范围,这个判断纯属画蛇添足。
修复代码
换个思路:先遍历数组找目标字母,没找到的话就添加。用个标记变量记录是否找到,循环结束后再处理:
def arrayTest(): array = ["a", "e", "i", "o", "u"] character = "b" found = False for char in array: if char == character: print(f"'{character}' is already in array") found = True break # 循环跑完都没找到,说明是新字母,添加进去 if not found: array.append(character) for element in array: print(element, end=" ") print("\n")
更简洁的写法
其实Python里可以直接用in关键字判断元素是否在数组里,不用手动遍历,代码更清爽:
def arrayTest(): array = ["a", "e", "i", "o", "u"] character = "b" if character in array: print(f"'{character}' is already in array") else: array.append(character) for element in array: print(element, end=" ") print("\n")
内容的提问来源于stack exchange,提问作者wildflower
相关产品推荐
相关产品推荐

