簡體   English   中英

如何在循環中創建循環(Python)?

[英]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)

而且我想將該代碼放入一個新循環中,但是如果我用whilefor明顯地做了一些事情,我會發現一個錯誤的計算。

對於單數循環,我通常會得到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM