如何实现每隔1秒打印不同数字,直到用户输入stop后终止并获取对应数值
实现代码
import random import time from threading import Thread # 存储最后输出的数字和终止标记 last_num = None stop_flag = False def print_num(): global last_num, stop_flag while not stop_flag: last_num = random.randint(100, 999) print(last_num) time.sleep(1) def main(): global stop_flag # 启动打印数字的子线程,避免输入阻塞影响计时 t = Thread(target=print_num, daemon=True) t.start() while True: ask = input('输入stop即可终止循环:') if ask.strip() == 'stop': stop_flag = True t.join() print(f'终止时最后输出的数字是:{last_num}') break if __name__ == "__main__": main()
相关说明
- 原有代码存在的问题:
- 语法错误:
while True下属的代码块没有缩进 input只在循环外执行了1次,进入循环后不会再获取用户新的输入- 没有加1秒延时逻辑,会无限快速打印随机数
- 没有存储最后一次打印数字的变量,终止后无法获取对应值
- 语法错误:
- 采用子线程单独执行数字打印逻辑,主线程持续监听用户输入,保证输入stop后可以立刻终止循环,同时准确保留最后一次输出的数字
内容的提问来源于stack exchange,提问作者dow6x
相关产品推荐
相关产品推荐

