猜元素游戏不符合预期:if-else语句无法正常运行
猜元素游戏代码修复
你的代码主要有两个问题导致if-else无法正常工作:
问题1:缩进错误
原代码里的if-else块没有缩进在while循环内部,导致循环只会反复让你输入,完全不处理判断逻辑,等三次输入完了才会执行一次判断,这显然不符合游戏逻辑。
问题2:比较逻辑错误
用户输入的是A-G的字母,但你直接拿输入的字母和secret_element("Oxygen")对比,比如输入G,代码会判断"G" != "Oxygen",肯定会触发错误分支,正确的做法是用输入的字母去字典element里取出对应的元素名,再和目标值比较。
修复后的完整代码
secret_element = "Oxygen" guess = "" amount = 3 element = { "A" : "Nitrogen", "B" : "Krypton", "C" : "Xenon", "D" : "Helium", "E" : "fluorine", "F" : "Lithium", "G" : "Oxygen" } b = 0 while b < 3: print("Insert alphabet A, B, C, D, E, F or G to find the element") guess = input("All you need is luck\n").strip().upper() # 统一转大写,避免大小写输入问题 # 先判断输入是否在字典的键里 if guess not in element: print("请输入A-G之间的字母!") continue # 从字典中取出对应的元素名 guessed_element = element[guess] if guessed_element != secret_element: b += 1 amount -= 1 print(f"{amount} 次机会剩余\neLPOZO") # 如果用完所有机会,提示失败 if b == 3: print(f"游戏结束,正确元素是 {secret_element}") else: print(f"恭喜你答对了!正确元素是 {secret_element}!") break # 答对后直接退出循环
额外优化点
- 加入了输入验证,防止用户输入非A-G的内容
- 把输入转成大写,避免用户输入小写字母(比如g)导致匹配失败
- 答对后直接break退出循环,不用继续输入
- 用完所有机会后提示正确答案
内容的提问来源于stack exchange,提问作者Aesthetic Vibes
相关产品推荐
相关产品推荐

