如何结束 while True: 打印所有可能性后循环?
Posted
技术标签:
【中文标题】如何结束 while True: 打印所有可能性后循环?【英文标题】:How do I end a while True: loop once all possibilities have been printed? 【发布时间】:2022-01-23 23:30:44 【问题描述】:打印所有可能性后如何结束循环?
对不起,如果问题的格式不好/烦人,我是新手,请耐心等待。
import random
while True:
comb = random.randint(0,100)
print(comb)
【问题讨论】:
如果您想确保打印所有值,那么为什么要按随机顺序遍历它们,而不是从 0 到 99 计数呢?如果您想以随机顺序获取这些值,那么这就是 shuffle 预定义的一组值,这是一个不同的问题。 @KarlKnechtel 关于随机顺序:也可以使用random.sample(range(100 + 1), k=101)
,但我同意这个问题不太清楚
【参考方案1】:
我假设您想在 [0, 100] 之间的所有数字都被随机打印后停止。在这种情况下,您需要跟踪到目前为止打印了哪些数字,并且只有在打印完所有 100 个不同的值后才中断。
import random
vals_so_far = set()
while True:
comb = random.randint(0, 100)
print(comb)
vals_so_far.add(comb)
if len(vals_so_far) == 101:
break
【讨论】:
我认为你需要一个 len 101 谢谢!已修复 - 我认为在 Java 中它会在 [0, 100) 范围内生成一个数字,但 Python 显然包括两端。 通常 python 不包括两端,但这是其中一种罕见的情况:docs.python.org/3/library/random.html#random.randint【参考方案2】:我本来可以这样做的:
for i in range (1,101):
print (i)
【讨论】:
嗨 Spiffy,您是要连续打印 1 到 100 的所有数字还是要打印随机数 - 就像您在问题中提出的那样?【参考方案3】:您必须跟踪结果,并确保所有结果都已打印。 如果只打印找到的唯一值就足够了:
import random
comb_values =
while len(comb_values) < 101:
comb = random.randint(0,100)
print(comb)
comb_values[comb] = ""
print(len(comb_values))
我使用了一个名为 comb_values 的字典,因为它只允许唯一值。获得 101 个唯一值后,您就找到了该范围内的每个数字。 您还可以执行一些操作,例如增加 dict 中的值,以计算找到每个值的次数。
【讨论】:
请注意,在这里使用集合更好,因为它保留唯一值(您实际上并没有以任何有意义的方式使用地图的值) 我同意,但建议可能要跟踪数字出现的次数。【参考方案4】:这里我想我有一个解决方案:
import random
comb_set = set()
run = True
while run:
comb = random.randint(0,100)
print(comb)
comb_set.add(comb)
if len(comb_set) == 100:
run = False
【讨论】:
【参考方案5】:我个人不会(我会在循环中添加一个条件),但如果您只是添加一个break
语句,它就会这样做。
import random
while True:
comb = random.randint(0,100)
print(comb)
break
https://docs.python.org/3/tutorial/controlflow.html
这只会打印一个随机数并停止。
【讨论】:
我需要所有 720 种组合,但感谢您的尝试 等等,什么?为什么你认为应该有 720 种组合? 什么的组合? @KarlKnechtel 是的,抱歉,我的数学有点不对劲。以上是关于如何结束 while True: 打印所有可能性后循环?的主要内容,如果未能解决你的问题,请参考以下文章