How to have multiple conditions for one if statement in python
本问题已经有最佳答案,请猛点这里访问。
所以我在用python 3.1.5编写一些代码,这些代码需要有多个条件才能发生某些事情。例子:
1 2 3 4 5 | def example(arg1, arg2, arg3): if arg1 == 1: if arg2 == 2: if arg3 == 3: print("Example Text") |
问题是,当我这样做时,如果arg2和arg3不等于0,它就不会打印任何内容。帮助?
我会用
1 2 3 | def example(arg1, arg2, arg3): if arg1 == 1 and arg2 == 2 and arg3 == 3: print("Example Text") |
编辑:事实上,你文章中提供的代码对我来说很好。我看不出有什么问题。我认为这可能是您的Python的问题,而不是实际的语言。
这可能有点奇怪,也可能有点不好,但这是一种解决方法。
1 2 3 4 | (arg1, arg2, arg3) = (1, 2, 3) if (arg1 == 1)*(arg2 == 2)*(arg3 == 3): print('Example.') |
乘以0的任何值==0。如果这些条件中的任何一个失败,那么它的计算结果将为假。
假设您传递的是字符串而不是整数,请尝试将参数强制转换为整数:
1 2 3 | def example(arg1, arg2, arg3): if int(arg1) == 1 and int(arg2) == 2 and int(arg3) == 3: print("Example Text") |
(编辑强调我不是在要求澄清;我只是想在我的回答中表现得圆滑些。??)
Darian Moody在他的博客中有一个很好的解决方案:
1 2 3 4 5 6 7 8 9 10 | a = 1 b = 2 c = True rules = [a == 1, b == 2, c == True] if all(rules): print("Success!") |
当给定iterable中的所有元素都为真时,all()方法返回
您可以在这里的python文档中阅读更多关于它的信息,并在这里阅读更多的信息和示例。
(我也用这里的信息回答了类似的问题——如何在python中为一个if语句提供多个条件)
我参加聚会有点晚了,但我想我会分享一种方法,如果你有相同类型的条件,即检查是否所有、任何或给定数量的a_1=a_2和b_1=b_2,这可以通过以下方式完成:
1 2 3 4 5 6 7 8 9 | cond_list_1=["1","2","3"] cond_list_2=["3","2","1"] nr_conds=1 if len([True for i, j in zip(cond_list_1, cond_list_2) if i == j])>=nr_conds: print("At least" + str(nr_conds) +" conditions are fullfilled") if len([True for i, j in zip(cond_list_1, cond_list_2) if i == j])==len(cond_list_1): print("All conditions are fullfilled") |
这意味着你可以在两个初始列表中进行更改,至少对我来说,这样做更容易。