如何在循环中创建循环(Python)?

如何在循环中创建循环(Python)?,python,numpy,loops,Python,Numpy,Loops,我想在一个循环中执行一个循环,但当我尝试这样做时,与单个循环相比,我发现一个错误的计算 我的代码有一个单数循环: 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),

我想在一个循环中执行一个循环,但当我尝试这样做时,与单个循环相比,我发现一个错误的计算

我的代码有一个单数循环:

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)
我想把这段代码放到一个新的循环中,但是如果我在
for
时用
做了一些明显的事情,我会发现一个错误的计算

对于单数循环,我通常得到一个介于1100和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)
1470.0
7.5
-1590.0
-3007.5
-4447.5
-5910.0
-7440.0
-8835.0
-10410.0
-11985.0
使用双循环时,我通常会得到
0下的一个数字。循环范围越大,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)
我认为每次运行此循环时都需要清除betresult。
也许你需要一些额外的代码来计算,这取决于你想要什么。

与熊猫无关,删除了标记我们无法帮助处理我们看不见的代码。添加尝试在循环中执行循环的代码。你能解释一下“我计算错了”是什么意思吗?python对缩进很敏感。第二个for循环需要与第一个for循环缩进。这意味着第二个for循环语句需要缩进,其中的任何内容都应该缩进两次。任何缩进一次的东西都只在第一个for循环内,任何缩进两次的东西都在第二个循环内(它本身在第一个循环内)。另外,不要将超出范围的变量“i”使用两次,这将导致它覆盖自身并导致问题。你仍然没有缩进内部循环。如果你没有使用迭代变量,惯例是使用
\uu
用于范围内的(10):用于范围内的(numobets):
我认为您需要将
betresult.clear()放入外部循环,而不是内部循环。只需将
bestresult=[]
移动到循环的开头。@btnvstusrnm
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)