gpt4 book ai didi

python - 为什么包含简单 while 循环的 for 循环只运行两次?而且很差

转载 作者:行者123 更新时间:2023-11-28 20:55:35 26 4
gpt4 key购买 nike

我正在尝试遍历这个 while循环几次以收集有关输出正确的行序列(拼写“CODER”)需要多长时间的信息。我期待我的 for loop 循环十次。相反,我只得到一个循环,然后在 0 秒内完成一次故障重复。

我可以替换 for i in (0, 10)符合 while i < 10并添加 i += 1稍后获得更长的故障输出(它将第一个结论循环到 while 循环 n 次而不是 2 次)。我还尝试将列表和字典移动到 for 循环内,但这并没有使循环正常运行。

from random import randint
from time import sleep
import datetime


stats_collection = []
correct_order = [0, 1, 2, 3, 4] # A list of numbers between 0 and 4
output_order = []
iterations = 0
the_lines = {0: "...###.................#####...####..",
1: "..#...#.........####...#.......#...#.",
2: "..#.......###...#...#..##......##....",
3: "..#...#..#...#..#...#..#.......#.#...",
4: "...###....###...####...#####...#..#..",}

for i in (0,10):

a_currentDT = str(datetime.datetime.now())

while output_order[-5:] != correct_order:
next = randint(0, 4) # Select between
output_order.append(next)
print(the_lines[next])
iterations += 1
# sleep(0.125)

final_iterations = iterations

b_currentDT = str(datetime.datetime.now())

print("Finished!")
print("Iterations: {num}".format(num=final_iterations))
print(a_currentDT)
print(b_currentDT)

stats_collection.append(final_iterations)

print(stats_collection)

我期望的是类似于 print(stats_collection) 的打印列表就像:[134, 2948, 4001, 598, 910, 1000, 2000, 3003, 10593, 403]或另一组 10 个数字。但是我只打印了两次第一次运行,或者 n次,如果我更换 forwhile 循环循环(如 while i < 10 或其他内容)。

这是我从 for i in (0, 10): 得到的输出作为遍历 while 的机制循环:

Finished!
Iterations: 8598
2019-06-02 15:21:21.543503
2019-06-02 15:21:21.641444
Finished!
Iterations: 8598
2019-06-02 15:21:21.641444
2019-06-02 15:21:21.641444
[8598, 8598]

我希望代码再次运行 while 循环并得到完全不同的结果,包括总共 10 个不同的结果,如下所示:

Finished!
Iterations: 8598
2019-06-02 15:21:21.543503
2019-06-02 15:21:21.641444
Finished!
Iterations: 159
2019-06-02 15:21:21.641445
2019-06-02 15:21:21.700555
[8598, 159]

当然有十个不同的结果。

除了这个杂项错误外,该代码可以很好地工作。我实际上不明白为什么代码会这样做。

看到第二个循环实际上是瞬间完成的可能很有用。我完全不知道发生了什么。我不能主持一个while吗?在 for 中循环就这样循环?

最佳答案

for i in (0,10): 依次将i设置为元组(0, 10)的每个元素.具体来说,就是:

  • 使用 i=0 运行循环体
  • 使用 i=10 运行循环体
  • 完成。

如果你想在0到(但不包括)10的范围内循环,你需要这样写:

for i in range(0, 10):

或者只是:

for i in range(10):

关于python - 为什么包含简单 while 循环的 for 循环只运行两次?而且很差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56419454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com