【发布时间】:2021-01-24 19:06:51
【问题描述】:
我正在为一个小游戏编写一个函数,其中每回合都会填充一个工作列表。工作本身是具有路线、时间和薪酬属性的对象。
我希望该列表共有 5 项,并通过从路线和工资等级列表中进行选择来随机填充。
我有一个 for 循环来迭代 5 次,并且我希望只有在选择了某些两条路线时才选择工资等级为 5。否则,薪酬等级将是 1 到 4 之间的随机数。
当我在 IF 子句中将薪酬等级设置为 5 时,即使 IF 的条件不正确,它也永远不会进入 else 子句。我不确定我在这里做错了什么。
for pick in range(5):
job = random.choice(random_routes)
if job == 'Military Base' or 'Raiders':
pay_key = 5
else:
pay_key = random.randint(1, 4)
pay = pay_grades[pay_key]
job_postings.append(Job(job, routes[job], pay))
从新的 job_postings 列表打印第一个索引属性总是返回 5 级工资数字,即使选择的路线不是军事基地或突袭者。
这里是路线和支付词典:
routes = {'Boneyard': 5, 'Brotherhood': 6, 'Cathedral': 6, 'Junktown': 4,
'Military Base': 14, 'Necropolis': 5, 'Raiders': 10, 'Shady Sands': 11}
pay_grades = {
1: random.randrange(200, 401, 50),
2: random.randrange(300, 501, 50),
3: random.randrange(400, 601, 50),
4: random.randrange(500, 701, 50),
5: random.randrange(900, 1600, 50),
}
【问题讨论】:
-
if job == 'Military Base' or 'Raiders':应该是if job == 'Military Base' or job == 'Raiders':。 -
job == 'Military Base' or 'Raiders'将永远为真,因为'Raiders'是一个真实的值,而您已将or编辑为job == 'Military Base'。 -
使用当前的 if 子句,
or、'Raiders'之后的后半部分始终计算为True(因为在 Python 中非空字符串始终为True),并且因此永远不会输入else。 -
@Samwise 哇,谢谢,应该已经看到了
标签: python dictionary if-statement random