在Python中,如何生成只需满足一定百分比条件的条件If语句?

2024-06-16 09:40:31 发布

您现在位置:Python中文网/ 问答频道 /正文

有时,在编写应用程序和程序时,在某些情况下,我更希望语句在满足其总条件中的一定数量的条件后是否有效

例如:

if (a>b andor a<c andor a==d): #if only 66% of the conditions are met
    print("Conditions have been met")

如果有关于该主题/想法的任何信息,欢迎提供帮助


Tags: ofthe程序应用程序only数量if情况
3条回答

编辑:正如u/Schwobasegl所指出的,您甚至不需要转换为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),然后将整个列表相加,给出真实条件的数量

请注意,这不会造成短路,也就是说,即使列表的第一部分中有足够的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中不是关键字,所以它会抛出一个错误

您可以这样做:

if(int(a>b) + int(a<c) + int(a==d) >= 2):
    print("Conditions have been met")

相关问题 更多 >