2024-06-16 09:40:31 发布
网友
有时,在编写应用程序和程序时,在某些情况下,我更希望语句在满足其总条件中的一定数量的条件后是否有效
例如:
if (a>b andor a<c andor a==d): #if only 66% of the conditions are met print("Conditions have been met")
如果有关于该主题/想法的任何信息,欢迎提供帮助
编辑:正如u/Schwobasegl所指出的,您甚至不需要转换为int:
int
if sum([a > b, a < c, a == d]) >= 2: print("Conditions have been met")
if sum(map(int, [a > b, a < c, a == d])) >= 2: print("Conditions have been met")
这将使用每个值的结果创建一个布尔列表,然后将它们全部转换为1(如果它们是True),或者0(如果是False),然后将整个列表相加,给出真实条件的数量
1
True
0
False
请注意,这不会造成短路,也就是说,即使列表的第一部分中有足够的True个条件忽略其余条件,它仍然会评估所有条件
我想说的是,你可以创建更多的条件句,如果你需要三分之二的语句结果为True,那么你可以这样做:
a = 1 b = 2 c = 3 d = 4 if a > b and a > c: print("Do something") elif a < c and a == d: print("Do something") elif a > b and a == d: print("Do other thing")
等等
我认为这是最好的方法,你想要的。顺便说一下andor在python中不是关键字,所以它会抛出一个错误
andor
您可以这样做:
if(int(a>b) + int(a<c) + int(a==d) >= 2): print("Conditions have been met")
编辑:正如u/Schwobasegl所指出的,您甚至不需要转换为
int
:这将使用每个值的结果创建一个布尔列表,然后将它们全部转换为
1
(如果它们是True
),或者0
(如果是False
),然后将整个列表相加,给出真实条件的数量请注意,这不会造成短路,也就是说,即使列表的第一部分中有足够的
True
个条件忽略其余条件,它仍然会评估所有条件我想说的是,你可以创建更多的条件句,如果你需要三分之二的语句结果为True,那么你可以这样做:
等等
我认为这是最好的方法,你想要的。顺便说一下
andor
在python中不是关键字,所以它会抛出一个错误您可以这样做:
相关问题 更多 >
编程相关推荐