在我的代碼中,我遍歷每年的資料幀以計算獲勝次數(數字之間增加)和失敗次數(數字之間減少),以及獲勝與失敗的比率。我正確運行的回圈在最終推送到的資料框中顯示了正確的勝負數。但是,在計算贏/輸比時,if 陳述句無緣無故地不起作用。這是回圈:
trades = []
wins = []
losses = []
winloss = []
for df in df_years_grouped:
total_trades = len(df)
trades.append(total_trades)
win = 0
loss = 0
for i, row in df.iterrows():
if i == 0:
continue
elif (df[1][i] > df[1][i-1]):
win = 1
elif (df[1][i] < df[1][i-1]):
loss = 1
wins.append(win)
losses.append(loss)
if win == 0 & loss == 0:
winloss.append(0)
elif win > 0 & loss == 0:
winloss.append('All Wins')
elif win == 0 & loss > 0:
winloss.append('All Losses')
else:
winloss.append(win/loss)
這是資料框中的結果:
Trades Win Lose W/L
11 5 5 All Wins
42 21 20 All Wins
35 16 18 All Wins
14 9 4 All Wins
23 13 9 All Wins
12 7 4 All Wins
4 2 1 All Wins
4 2 1 All Wins
11 5 5 All Wins
6 3 2 All Wins
0 0 0 0
9 6 2 All Wins
2 0 1 0
16 6 9 All Wins
3 0 2 0
14 7 6 All Wins
206 106 99 1.070707
如您所見,它適用于一兩個,但失敗最多,使大多數人獲勝?
uj5u.com熱心網友回復:
我相信您應該在 if 陳述句中使用“and”而不是“&”。您可以在此處閱讀差異:
https://www.geeksforgeeks.org/difference-between-and-and-in-python/
uj5u.com熱心網友回復:
我認為問題在于“和”和“&”之間
閱讀以下內容: https ://www.geeksforgeeks.org/difference-between-and-and-in-python/
'and' 是本地 AND 而 '&' 是位和 'AND'
a = 14
b = 4
print(b and a) - 14
print(b & a) - 4
也見這里: Python中的“&”和“and”有什么區別?
我建議更改您的代碼以使用邏輯 AND
或者如果您不介意更多 IF 陳述句,則可能是以下內容
if win == 0:
if loss == 0
winloss.append(0)
elif loss > 0:
winloss.append('All Losses')
elif win > 0:
if loss == 0:
winloss.append('All Wins')
else:
winloss.append(win/loss)
作為外部用戶,我個人也會發現這更容易閱讀
uj5u.com熱心網友回復:
您應該使用and
而不是&
,它們具有不同的優先級:
win == 0 & loss == 0
相當于win == (0 & loss) == 0
:
import ast
assert ast.dump(ast.parse("win == 0 & loss == 0")) == ast.dump(ast.parse("win == (0 & loss) == 0"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/496724.html
上一篇:如何簡化陳述句
下一篇:我嘗試了這個簡單的javascript代碼ifelseblockError:-Declarationorstatementexpected