Python 如何通过击键使循环停止
你好,我有一个循环,它基本上是一个名称生成器,我想在某个时候停止它。我想用一个键来停止它。因为我不能停止它,因为它生成单词的速度很高,我不能输入停止或任何它太快的东西。就像如果我按Enter键,生成器应该停止,但我不知道如何停止。当生成器生成1000个字,它将停止。所有计时器停止/计时器都被接受。这是mycode'Python 如何通过击键使循环停止,python,loops,timer,key,generator,Python,Loops,Timer,Key,Generator,你好,我有一个循环,它基本上是一个名称生成器,我想在某个时候停止它。我想用一个键来停止它。因为我不能停止它,因为它生成单词的速度很高,我不能输入停止或任何它太快的东西。就像如果我按Enter键,生成器应该停止,但我不知道如何停止。当生成器生成1000个字,它将停止。所有计时器停止/计时器都被接受。这是mycode' import time from time import sleep import random import string def run_bot(): x
import time
from time import sleep
import random
import string
def run_bot():
x1 = random.choice(string.ascii_uppercase)
x2 = random.choice(string.ascii_lowercase)
x3 = random.choice(string.ascii_lowercase)
x4 = random.choice(string.ascii_lowercase)
x5 = random.choice(string.ascii_lowercase)
name = str(x1 + x2 + x3 +x4 +x5)
print(name)
while True:
for i in range(5):
run_bot()
`您可以使用多线程 有一个名为
stop
的全局变量:
stop = False
并将您的while True
替换为while not stop
然后,您可以创建一个函数,等待用户按enter键并在新线程中调用它,这样它就不会中断您的名称生成:
from threading import Thread
def wait_for_stop():
input()
stop = True
Thread(target=wait_for_stop).start()
在进入while循环之前只需调用这些行,一切都应该正常工作。“当生成器生成1000个字时,它将停止”因此对范围(1000)中的i使用
,
并删除while True
循环?这里有一个类似的问题,您还需要使用一些GUI库来捕获关键事件…GTK3、QT、SDL2,特金特也许能帮上忙