我正在处理循环,我遇到了一个问题,所以我有一个简单的for loop
,它可以附加0和1之间的随机值,基本上我需要的是不断添加值,直到出现一定数量的0或1,例如:
iteration 1 = [0]
iteration 2 = [0,1]
...
iteration 6 = [0,1,1,1,1,1] #Here appear five 1's so I break the loop (it can be another number not necessarily 5 ones or 5 zeros)
for loop
非常简单:
import numpy as np
value = []
for i in range(5):
value.append(np.random.randint(0, 2))
print(value)
以下是我试图使用if-break
语句打破循环的内容
value = []
for i in range(5):
if value == value:
value.append(np.random.randint(0, 2))
else
break
print(value)
我最大的问题是,我不知道如何指定编码,如果某个数字0或1出现,就会打破循环,所以我希望你能给我指一个正确的方向。提前谢谢!
在这种情况下,当您不知道需要确切的迭代次数时,使用while
循环是默认标准您可以有两个变量作为最大允许数,在本例中,我使用numOnes as 5
和numbZeros as 3
,使用While True
循环并在每次迭代时检查条件,如果条件不满足,则中断。
import numpy as np
numOnes = 5
numZeros = 3
value = []
while True:
value.append(np.random.randint(0, 2))
print(value)
if value.count(0) >= numZeros or value.count(1)>=numOnes:
break
由于您通常会询问break
语句,所以我使用了if条件,否则您可以像while value.count(0) >= numZeros or value.count(1)>=numOnes:
一样使用while循环本身的条件
此外,如果您使用for
循环是因为您只需要指定的迭代次数,那么您的循环很好,不需要使用while
循环,只需在循环的出口点添加if
条件:
import numpy as np
numOnes = 5
numZeros = 3
value = []
for i in range(5):
value.append(np.random.randint(0, 2))
print(value)
if value.count(0) >= numZeros or value.count(1)>=numOnes:
break
使用两个变量来跟踪随机数getter生成的0和1的数量。
然后,在for循环中,使用if语句逻辑在适当的位置附加或中断
您可以计算要打破的数字。
value = []
count = [0, 0]
while True:
value.append(np.random.randint(0, 2))
count[value[-1]] += 1
if count[1] == 5: # or something like that
break
编辑:如果您需要连续的值,当出现不需要的值时,您可以相应地重置计数。
count[value[-1]] += 1
count[1 - value[-1]] = 0