如何在python中为一个if语句提供多个条件

时间:2016-04-21 01:24:26

标签: python function if-statement arguments conditional-statements

所以我在python 3.1.5中编写了一些代码,要求有一个以上的条件才能发生。例如:

def example(arg1, arg2, arg3):
    if arg1 == 1:
        if arg2 == 2:
            if arg3 == 3:
                print("Example Text")

问题在于,当我这样做时,如果arg2和arg3等于0,那么它不会打印任何东西。帮助?

5 个答案:

答案 0 :(得分:13)

我会用

def example(arg1, arg2, arg3):
     if arg1 == 1 and arg2 == 2 and arg3 == 3:
          print("Example Text")

and运算符与具有相同名称的逻辑门相同;当且仅当所有输入都为1时,它将返回1.如果您想要逻辑门,也可以使用or运算符。

编辑:实际上,您帖子中提供的代码可以和我一起使用。我没有看到任何问题。我认为这可能是你的Python的一个问题,而不是实际的语言。

答案 1 :(得分:1)

假设您传入的是字符串而不是整数,请尝试将参数转换为整数:

def example(arg1, arg2, arg3):
     if int(arg1) == 1 and int(arg2) == 2 and int(arg3) == 3:
          print("Example Text")

(编辑强调我不是要求澄清;我试图在答案中保持外交。)

答案 2 :(得分:1)

可能有点奇怪或不好的做法,但这是解决问题的一种方式。

(arg1, arg2, arg3) = (1, 2, 3)

if (arg1 == 1)*(arg2 == 2)*(arg3 == 3):
    print('Example.')

任何乘以0 == 0.如果这些条件中的任何一个失败,那么它的计算结果为假。

答案 3 :(得分:0)

我对派对来说有点晚了,但如果您有相同类型的条件,我认为我会分享一种方法,即检查是否所有,任何或给定数量的A_1 = A_2和B_1 = B_2 ,这可以通过以下方式完成:

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")

这意味着您只需更改两个初始列表,至少对我来说这会更容易。

答案 4 :(得分:0)

Darian Moody在他的blog post

中为这一挑战提供了很好的解决方案
a = 1
b = 2
c = True

rules = [a == 1,
         b == 2,
         c == True]

if all(rules):
    print("Success!")

当给定iterable中的所有元素都为true时,all()方法返回True。如果没有,则返回False

您可以在python docs here中阅读 little 更多信息,以及更多信息和示例here

(我也在这里回答了类似的问题 - How to have multiple conditions for one if statement in python