首先,对或有条件的:
你需要说:
if x == 0 or y == 0 or z == 0:
原因是“或”将条件拆分为单独的逻辑部分。按照你最初陈述的方式,这些部分是:
x
y
z == 0 // or 1, 2, 3 depending on the if statement
最后一部分很好——例如,检查z==0,但前两部分基本上说了如果x和如果y。因为整数总是求值为True,除非它们为0,这意味着当x或y不等于0时,条件的第一部分始终为True(在y的情况下,因为y=1,所以整个条件(因为or的工作方式)始终为True)。
为了避免这种情况,您需要确保条件的所有部分(OR的每一侧)都有意义(您可以假装OR语句的另一侧不存在)。这就是您确认or条件是否正确定义的方法。
您可以这样单独编写声明:
if x == 0
if y == 0
if z == 0
这意味着与OR关键字的正确合并将是:
if x == 0 or y == 0 or z == 0
第二,如何解决问题:
您基本上希望检查是否有任何变量与给定的整数匹配,如果匹配,请在一对一映射中为其分配一个匹配的字母。您希望对某个整数列表执行此操作,以便输出为字母列表。你可以这样做:
def func(x, y, z):
result = []
for integer, letter in zip([0, 1, 2, 3], ['c', 'd', 'e', 'f']):
if x == integer or y == integer or z == integer:
result.append(letter)
return result
同样,您可以使用LIST COMPRESENSION更快地获得相同的结果:
def func(x, y, z):
return [
letter
for integer, letter in zip([0, 1, 2, 3], ['c', 'd', 'e', 'f'])
if x == integer or y == integer or z == integer
]