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

Python程序如何添加计时器实现乘法练习限时答题功能?

乘法限时答题程序实现

基于你现有代码,只需新增「答题计时+超时判断」逻辑即可实现需求,提供两种可直接套用的方案:


方案1:快速跑通(新手友好,改动最少)

该方案依赖轻量第三方库,先在终端执行pip install inputimeout完成安装,之后代码可直接运行,完全适配你原有逻辑:

import random
from inputimeout import inputimeout, TimeoutOccurred

# 可自定义每道题的答题时长,单位为秒
TIME_LIMIT = 10
F = 1

while F == 1:
    x = random.randint(1,10)
    y = random.randint(1,10)
    Result = y*x

    print(f"\n请在{TIME_LIMIT}秒内回答:{y} * {x} = ?")
    try:
        Input = int(inputimeout(prompt="", timeout=TIME_LIMIT))
    except TimeoutOccurred:
        print(f"超时未作答,答题失败!正确答案是:{Result}")
        # 超时直接进入下一题,跳过判分逻辑
        continue
    except:
        print("请输入有效的数字答案!")
        continue
    
    if Result == Input:
        print("correct")
    else:
        print("Wrong, correct result:",Result)

关键说明:

  • 修改TIME_LIMIT的数值,即可调整每道题的允许答题时长
  • 内置输入合法性判断,输入字母、符号时程序不会直接崩溃

方案2:纯标准库实现(无需安装依赖,兼容全系统)

如果不想安装第三方库,用Python自带的线程模块即可实现,Windows/macOS/Linux都能正常运行:

import random
import time
import threading

# 可自定义每道题的答题时长,单位为秒
TIME_LIMIT = 10
F = 1

# 全局变量记录用户输入、输入完成状态
user_input = None
input_done = False

# 子线程专门负责接收用户输入,避免阻塞主线程计时
def get_input():
    global user_input, input_done
    try:
        user_input = int(input())
    except:
        user_input = None
    input_done = True

while F == 1:
    # 每轮答题前重置状态,避免上一轮的状态影响下一题
    user_input = None
    input_done = False
    x = random.randint(1,10)
    y = random.randint(1,10)
    Result = y*x

    print(f"\n请在{TIME_LIMIT}秒内回答:{y} * {x} = ?")
    # 启动输入子线程
    input_thread = threading.Thread(target=get_input)
    input_thread.daemon = True  # 设为守护线程,程序退出时自动结束子线程
    input_thread.start()

    # 主线程循环计时,同时检测输入状态
    start_time = time.time()
    while True:
        # 已收到用户输入,直接跳出计时循环
        if input_done:
            break
        # 计时超过阈值,判定超时
        if time.time() - start_time >= TIME_LIMIT:
            print(f"超时未作答,答题失败!正确答案是:{Result}")
            break
        # 短暂休眠,降低CPU占用
        time.sleep(0.1)

    # 超时的话直接进入下一题,跳过判分
    if time.time() - start_time >= TIME_LIMIT:
        continue
    # 输入非有效数字的情况
    if user_input is None:
        print("请输入有效的数字答案!")
        continue

    if Result == user_input:
        print("correct")
    else:
        print("Wrong, correct result:",Result)

可选优化项

  • 新增得分统计:加全局score变量,答对时score +=1,答题结束后打印总得分
  • 调整出题范围:把random.randint(1,10)的参数改成需要的范围,比如1-9适配低年级练习
  • 增加友好反馈:答对时打印鼓励语,答错/超时提示加油,更适合小朋友使用
  • 新增退出逻辑:判断用户输入为q时,将F设为0即可退出循环,不用强制关闭窗口

内容的提问来源于stack exchange,提问作者Frettchen YT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 01:36:00