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

Python实现带50秒计时器的5题测验:超时自动结束并跳题

实现带50秒计时器的德语测验

针对你的需求,我们可以用Python的threading模块实现计时器与答题逻辑并行运行,让计时器在后台倒计时的同时,你能正常完成答题。下面是适配你需求的完整示例代码,可直接替换你已有的德语题目:

import threading
import time

# 全局标记:记录时间是否耗尽
time_up = False
# 记录已完成的题目数量
completed_questions = 0

def timer():
    """后台运行的50秒倒计时函数"""
    global time_up
    for remaining in range(50, 0, -1):
        if time_up:  # 如果提前答完所有题,直接终止计时器
            break
        # 实时刷新剩余时间(同一行覆盖显示)
        print(f"\r剩余时间: {remaining}秒", end="")
        time.sleep(1)
    # 时间耗尽时设置标志
    if not time_up:
        time_up = True
        print("\n时间到!剩余题目将自动跳过")

# 替换成你自己的德语题目和答案
questions = [
    {
        "frage": "Was bedeutet 'Haus' auf Englisch?",
        "antwort": "house"
    },
    {
        "frage": "Wie sagt man 'Katze' auf Englisch?",
        "antwort": "cat"
    },
    {
        "frage": "Was ist die Hauptstadt von Deutschland?",
        "antwort": "Berlin"
    },
    {
        "frage": "Wie viel ist 9 + 6?",
        "antwort": "15"
    },
    {
        "frage": "Was ist die Farbe von Banane?",
        "antwort": "gelb"
    }
]

def run_quiz():
    global time_up, completed_questions
    # 启动计时器线程(后台运行,不阻塞答题)
    timer_thread = threading.Thread(target=timer)
    timer_thread.daemon = True  # 主线程结束时,计时器自动退出
    timer_thread.start()

    # 遍历题目开始测验
    for idx, q in enumerate(questions, 1):
        if time_up:  # 检查时间是否耗尽,是则跳过剩余题目
            break
        
        print(f"\n\n第{idx}题: {q['frage']}")
        user_answer = input("Deine Antwort: ").strip().lower()

        # 这里可以替换成你已有的if/elif/else答案判断逻辑
        if user_answer == q["antwort"].lower():
            print("Richtig!")
        else:
            print(f"Falsch. Die richtige Antwort ist: {q['antwort']}")
        
        completed_questions += 1

    # 测验结束统计结果
    print(f"\n--- 测验结束 ---")
    print(f"完成题目数: {completed_questions}/5")
    print(f"结束原因: {'时间耗尽' if time_up else '完成所有题目'}")

# 启动测验
if __name__ == "__main__":
    run_quiz()

核心逻辑说明:

  • 线程计时器:用threading.Thread开启独立线程运行倒计时,避免阻塞用户输入答题的操作。daemon=True确保主线程结束时,计时器线程自动关闭。
  • 时间耗尽标记:全局变量time_up用来同步计时器和答题逻辑,时间到或答完题时,两边都会终止对应流程。
  • 实时倒计时:用print(f"\r剩余时间: {remaining}秒", end="")实现同一行刷新倒计时,避免刷屏。
  • 题目跳过机制:每道题开始前先检查time_up状态,若为True则直接跳出循环,跳过剩余题目。

你只需要把questions列表里的内容替换成自己的德语题目和答案,原有if/elif/else的答案判断逻辑也可以直接整合到代码的答案验证部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:42:25