[英]How to make a loop in a loop (Python)?
我想在一個循環中執行一個循環,但是當我嘗試這樣做時,與奇異循環相比,我發現了一個錯誤的計算。
我的代碼帶有一個有效的奇異循環:
betresult = []
#main parameters
budget = 1500
numofbets = 100
win = 7.5
loss = -15
for i in range(numofbets):
#random list: 1 - win, 0 - loss
test = np.random.choice(np.arange(0, 2), p=[0.333, 0.667])
betresult.append(test)
#number of win and loss
winbets = np.sum(betresult)
lossbets = numofbets - winbets
#sum of win and loss
winsum = winbets * win
losssum = lossbets * loss
#final sum
result = budget - (winsum + losssum)
print(result)
而且我想將該代碼放入一個新循環中,但是如果我用while
或for
明顯地做了一些事情,我會發現一個錯誤的計算。
對於單數循環,我通常會得到one number between 1100 and 1800
的數字。
計算錯誤的代碼:
betresult = []
#main parameters
budget = 1500
numofbets = 100
win = 7.5
loss = -15
for i in range(10):
for j in range(numofbets):
#random list: 1 - win, 0 - loss
test = np.random.choice(np.arange(0, 2), p=[0.333, 0.667])
betresult.append(test)
#number of win and loss
winbets = np.sum(betresult)
lossbets = numofbets - winbets
#sum of win and loss
winsum = winbets * win
losssum = lossbets * loss
#final sum
result = budget - (winsum + losssum)
print(result)
使用雙循環,我通常會得到a number under 0
。 並且循環范圍越大,0 下的數字越大。
錯誤執行(計算)的示例:
1470.0
7.5
-1590.0
-3007.5
-4447.5
-5910.0
-7440.0
-8835.0
-10410.0
-11985.0
問題是 betresult 附加了 10 次迭代的所有值,這就是你得到否定答案的原因
import numpy as np
#main parameters
budget = 1500
numofbets = 100
win = 7.5
loss = -15
for i in range(10):
#declaring inside the first loop
betresult = []
for j in range(numofbets):
#random list: 1 - win, 0 - loss
test = np.random.choice(np.arange(0, 2), p=[0.333, 0.667])
betresult.append(test)
#number of win and loss
winbets = np.sum(betresult)
lossbets = numofbets - winbets
#sum of win and loss
winsum = winbets * win
losssum = lossbets * loss
#final sum
result = budget - (winsum + losssum)
print(result)
import numpy as np
betresult = []
#main parameters
budget = 1500
numofbets = 100
win = 7.5
loss = -15
summary = 0
for i in range(80):
for i in range(numofbets):
test = np.random.choice(np.arange(0, 2), p=[0.333, 0.667])
betresult.append(test)
winbets = np.sum(betresult)
lossbets = numofbets - winbets
winsum = winbets * win
losssum = lossbets * loss
result = budget - (winsum + losssum)
#betresult.clear() should be outside the second loop
betresult.clear()
print(result)
我認為您每次運行此循環時都需要清除您的 betresult 。 也許你需要一些額外的代碼來計算,這取決於你想要什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.