Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过击键使循环停止_Python_Loops_Timer_Key_Generator - Fatal编程技术网

Python 如何通过击键使循环停止

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

你好,我有一个循环,它基本上是一个名称生成器,我想在某个时候停止它。我想用一个键来停止它。因为我不能停止它,因为它生成单词的速度很高,我不能输入停止或任何它太快的东西。就像如果我按Enter键,生成器应该停止,但我不知道如何停止。当生成器生成1000个字,它将停止。所有计时器停止/计时器都被接受。这是mycode'

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,特金特也许能帮上忙