我是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。
答案 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
如果ppar
和bpar
是包含一些等于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')
它工作正常。通过改变值,我得到了适当的结果。您的代码出了什么问题?