2016-07-15 93 views
0

我是新來的蟒蛇,並認爲這是有點簡單,但我遇到了一些問題在這裏。我試圖在if語句中放置多個條件。代碼的一部分,我想這樣做是爲了看起來像這樣: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語句並追加到選項卡。

+0

你能向我們展示一個bpar&ppar內容的例子嗎? – yampelo

+0

請在問題 –

+0

上顯示[mcve]因爲'ppar'和'bpar'是數組,所以不清楚你正在測試什麼條件。例如'ppbar!= 0'會給出一個布爾數組。你想測試是否有任何元素不等於零或所有元素?而不是'ppbar!= 0'使用類似'(ppbar!= 0).any()'或'(ppbar!= 0).all()'的東西。 – pbreach

回答

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]) 
+0

這就是我最初嘗試的,但沒有奏效。 – user6496380

+0

是ppar和bpar整​​數嗎? – yampelo

+0

它們是保存元素的數組。 – user6496380

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的幾個值的列表,這可能是最好的解決方案。否則,如其他答案所示,使用不同的解決方案會更好。

0

如果ppar和bpar是列表,並且希望在將其附加到「選項卡」之前確保其特定元素不爲零。然後,你可以把額外的檢查,並做一些沿着這條線:

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]) 
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') 

它工作得很好。通過改變數值,我得到了適當的結果。你的代碼有什麼問題?