如何使用while循环终止python脚本并获得结果



我想生成5分钟的随机数。之后,我想知道最常见的数字。

我的问题是:

我不确定我需要多少时间。我可以在1分钟或1分19秒手动终止脚本并获得结果吗

我的代码如下:

import random
from collections import Counter
t_end = time.time() + 60*5
numbers = []
while time.time() < t_end:
number=''.join(map(str, [random.randint(0,9)for value in range(0,4)]))
numbers.append(number)
print(Counter(numbers))

有无数的选项:

  • 每隔5秒左右打印一个中间结果,并用ctrl+C中止脚本
  • 检查是否按下空格或其他键,如果按下,则中止循环(请参阅此处了解如何操作(
  • 监听信号并相应地进行处理(这也可以优雅地终止选项1的脚本(
  • 如果有停止信号,打开插座,听插座
  • 使用TKinter或what创建一个gui,并添加一个停止按钮

第一个是最简单的,但也是最快的&脏的。对于第二个选项,下面的脚本应该让你开始(你的脚本在添加空白和换行符后对我有效(:

import keyboard
while True: 
if keyboard.read_key() == "p": 
print("You pressed p") 
break

假设python3和windows:请注意,默认情况下keyboard没有随python一起提供。您需要将其与pip3 install keyboard一起安装。Pip3.exe可能不在您的路径上。cd到您安装python的位置,然后四处查看。对我来说,它在Scripts文件夹中(不过我的安装非常混乱(。

import random
from collections import Counter
import time
t_end = time.time() + 60*5
numbers = []
while time.time() < t_end:
number=''.join(map(str, [random.randint(0,9)for value in range(0,4)]))
numbers.append(number)
if time.time()==(t_end-60*4): # break a 1 min
break
print(Counter(numbers))

正如luiggi在评论中已经提到的,您可以简单地使用迭代次数作为限制,并使用for循环:

number_of_iterations = 10000
for i in range(number_of_iterations):
place_your_function_here()

然而,如果你出于某种原因真的想使用时间,以下是你可以做到的方法:在while块底部更新当前时间,在while循环的持续条件下,将其与完成时间进行比较:

import datetime

delta_in_seconds = 60
finish = datetime.datetime.now() + datetime.timedelta(0, delta_in_seconds)
while time < finish:
place_your_function_here()
time = datetime.datetime.now()

最新更新