Python: 如何在 if 语句中放置多个 and/or 条件?
Python: How to put multiple and/or conditionals in an if statement?
我是 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,我将得到除以零的错误并且无法继续。
因此,我想要做的是,当我深入了解这个 if 条件时,它需要满足以下条件,即我正在查看的 ppar 或 bipar 中的任何元素都不为零(如果它为零,我不会将其附加到列表选项卡)。
我已经尝试搜索语法应该是什么,但似乎在我的 if 语句中放置一个数组也可能是一个问题。我目前使用的这种语法不起作用。我真的很感激 help/suggestions 如何做到这一点。谢谢!
编辑:有没有办法做这个条件,这样你就可以说 ppar 或 bpar 的两个连续值彼此不相等?所以当你通过语句一次并获得一个值,然后再次通过它并获得相同的值时,它不会通过 if 语句并附加到选项卡。
如果您所做的只是检查 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])
如果你除以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 的值的列表,这可能是最佳解决方案。否则,最好使用其他答案所建议的不同解决方案。
如果 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])
我运行下面的代码:
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')
而且效果很好。通过更改值,我得到了适当的结果。你的代码有什么问题?
我是 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,我将得到除以零的错误并且无法继续。
因此,我想要做的是,当我深入了解这个 if 条件时,它需要满足以下条件,即我正在查看的 ppar 或 bipar 中的任何元素都不为零(如果它为零,我不会将其附加到列表选项卡)。
我已经尝试搜索语法应该是什么,但似乎在我的 if 语句中放置一个数组也可能是一个问题。我目前使用的这种语法不起作用。我真的很感激 help/suggestions 如何做到这一点。谢谢!
编辑:有没有办法做这个条件,这样你就可以说 ppar 或 bpar 的两个连续值彼此不相等?所以当你通过语句一次并获得一个值,然后再次通过它并获得相同的值时,它不会通过 if 语句并附加到选项卡。
如果您所做的只是检查 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])
如果你除以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 的值的列表,这可能是最佳解决方案。否则,最好使用其他答案所建议的不同解决方案。
如果 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])
我运行下面的代码:
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')
而且效果很好。通过更改值,我得到了适当的结果。你的代码有什么问题?