如何结束 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: 打印所有可能性后循环?的主要内容,如果未能解决你的问题,请参考以下文章

如何使“主线程”等待“子线程”执行结束后再继续执行

delphi 多线程问题

使用“while (true) ...”有啥意义?

while true 如何退出循环

do{}while(false)妙用

Python学习笔记-流程控制(while循环)