Python随机选择反派后武器匹配失效问题排查
问题排查与修复
你的代码始终返回剑的核心问题出在if条件的逻辑写法错误,以及不必要的语法冗余:
错误点分析
条件判断逻辑错误
原代码的if {creature} == "wicked fairy" or "gorgon" or "troll" or "dragon":完全不符合Python的逻辑判断规则。Python会把这个表达式拆成:- 先判断
creature == "wicked fairy"(这部分是正常的比较) - 然后依次判断
"gorgon"、"troll"、"dragon"这三个字符串本身。在Python中,非空字符串的布尔值为True,所以不管creature选的是什么,这个if条件永远会成立,自然每次都会执行items.append("sword")。
- 先判断
冗余的花括号
这里的{creature}写法完全没必要,直接用变量名creature即可,花括号是格式化字符串时才需要的语法。
修复方案
方案一:逐个比较(直观写法)
把每个条件都明确和creature做比较:
import random # 必须导入random模块,原代码遗漏了这行 creatures = ["wicked fairy", "gorgon", "troll", "dragon", "small child", "Karen", "ex-wife"] weapons = ["Sword of Ogoroth", "Nintendo Switch", "social media", "alimony"] creature = random.choice(creatures) items = [] if creature == "wicked fairy" or creature == "gorgon" or creature == "troll" or creature == "dragon": items.append("sword") elif creature == "small child": items.append("Switch") elif creature == "Karen": items.append("phone") else: items.append("money")
方案二:用in运算符(更简洁高效)
把需要匹配的反派放到一个列表里,用in判断成员关系,代码更简洁:
import random creatures = ["wicked fairy", "gorgon", "troll", "dragon", "small child", "Karen", "ex-wife"] weapons = ["Sword of Ogoroth", "Nintendo Switch", "social media", "alimony"] creature = random.choice(creatures) items = [] # 把需要用剑的反派放到一个列表里,用in判断 if creature in ["wicked fairy", "gorgon", "troll", "dragon"]: items.append("sword") elif creature == "small child": items.append("Switch") elif creature == "Karen": items.append("phone") else: items.append("money")
内容的提问来源于stack exchange,提问作者Maria M
相关产品推荐
相关产品推荐

