我想生成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()