Python:如何将多个和/或条件放在if语句中?

时间:2016-07-15 01:05:48

标签: python arrays conditional

我是python的新手,并认为这有点简单,但我遇到了一些问题。我试图在if语句中放入多个条件。我试图这样做的部分代码如下:

if (pp_or_bi < 0.5 and (ppar > 0 or ppar < 0) and (bpar > 0 or bpar < 0)):
    tab.append(ppar[pele + 10*psel])
else:
    tab.append(bipar[bele + 8*bint])

这里发生了什么:ppar或bipar包含一些值,括号[]内的东西正在选择ppar或bipar的某个数字(带有一定的索引)以附加到标签中。

由于我正在更新内容的方式,如果ppar或bipar的元素为0,我会得到除零错误,无法继续。

因此,我正在尝试做的是当我接受这个条件时,它需要满足条件,即我所看到的ppar或bipar中的任何元素都不为零(如果它为零,我不会将其附加到列表标签)。

我已经尝试过搜索语法应该是什么,但似乎在将我的if语句放入数组时也会出现问题。我目前的这种语法不起作用。我真的很感激有关如何做到这一点的任何帮助/建议。谢谢!

编辑:有没有办法做这个条件,你可以说ppar或bpar的两个连续值彼此不相等?所以当你经历一次语句并得到一个值,然后再次通过它并获得相同的值时,它将不会通过if语句并附加到tab。

4 个答案:

答案 0 :(得分:1)

如果您所做的只是检查ppar或bipar是否为0,则无法进行以下工作?

if (pp_or_bi < 0.5 and ppar!=0 and bpar!=0 ):
    tab.append(ppar[pele + 10*psel])
else:
    tab.append(bipar[bele + 8*bint])

答案 1 :(得分:0)

如果除以0,您将得到ZeroDivisionError。您可以使用try语句捕获此错误,如下所示:

try:    
    if pp_or_bi < 0.5:
        tab.append(ppar[pele + 10*psel])
    else:
        tab.append(bipar[bele + 8*bint])
except ZeroDivisionError:
    pass

如果pparbpar是包含一些等于0的值的列表,则这可能是最佳解决方案。否则,最好使用不同的解决方案,如其他答案所示。

答案 2 :(得分:0)

如果ppar和bpar是列表,并且您希望在将其附加到“tab”之前确保其特定元素为非零。然后你可以额外检查并沿着这条线做点什么:

if (pp_or_bi < 0.5):
    if (ppar[pele + 10*psel] != 0 ):
        tab.append(ppar[pele + 10*psel])
else:
    if (bipar[bele + 10*bint] != 0 ):  
        tab.append(bipar[bele + 8*bint])

答案 3 :(得分:0)

我运行了以下代码:

pp_or_bi = 0.1
ppar = 2
bpar = 3
tab = []

if (pp_or_bi < 0.5 and (ppar > 0 or ppar < 0) and (bpar > 0 or bpar < 0)):
    print('first worked')
else:
    print('second worked')

它工作正常。通过改变值,我得到了适当的结果。您的代码出了什么问题?