You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现每隔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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 16:00:02