我试图制作一个函数,将多个变量与一个整数进行比较,并输出一个三个字母的字符串。我想知道是否有办法将其翻译成Python。所以说:
x = 0
y = 1
z = 3
mylist = []
if x or y or z == 0:
mylist.append("c")
if x or y or z == 1:
mylist.append("d")
if x or y or z == 2:
mylist.append("e")
if x or y or z == 3:
mylist.append("f")
其将返回以下列表:
["c", "d", "f"]
你可以通过两种方式发展它
def compareVariables(x,y,z):
mylist = []
if x==0 or y==0 or z==0:
mylist.append('c')
if x==1 or y==1 or z==1:
mylist.append('d')
if x==2 or y==2 or z==2:
mylist.append('e')
if x==3 or y==3 or z==3:
mylist.append('f')
else:
print("wrong input value!")
print('first:',mylist)
compareVariables(1, 3, 2)
Or
def compareVariables(x,y,z):
mylist = []
if 0 in (x,y,z):
mylist.append('c')
if 1 in (x,y,z):
mylist.append('d')
if 2 in (x,y,z):
mylist.append('e')
if 3 in (x,y,z):
mylist.append('f')
else:
print("wrong input value!")
print('second:',mylist)
compareVariables(1, 3, 2)
要针对单个值测试多个变量,请执行以下操作:
将变量包装在集合对象中,例如{a,b,c}。使用in运算符测试值是否存储在任何变量中。如果值存储在至少一个变量中,in运算符将返回True。
# ✅ test multiple variables against single value using tuple
if 'a' in (a, b, c):
print('value is stored in at least one of the variables')
# ---------------------------------------------------------
# ✅ test multiple variables against single value using tuple
if 'a' in {a, b, c}:
print('value is stored in at least one of the variables')
# ---------------------------------------------------------
# ✅ test multiple variables against single value (OR operator chaining)
if a == 'a' or b == 'a' or c == 'a':
print('value is stored in at least one of the variables')
资料来源:https://bobbyhadz.com/blog/python-test-multiple-variables-against-single-value
写x或y或z==0的直接方法是
if any(map((lambda value: value == 0), (x,y,z))):
pass # write your logic.
但我认为,你不喜欢这种方式很难看。
另一种方式(更好)是:
0 in (x, y, z)
顺便说一句,很多如果可以写成这样
my_cases = {
0: Mylist.append("c"),
1: Mylist.append("d")
# ..
}
for key in my_cases:
if key in (x,y,z):
my_cases[key]()
break