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

PyCharm中inputtimeout循环无法终止问题求助

PyCharm中inputtimeout循环无法终止问题求助

看起来你的递归逻辑里有几个小bug导致程序停不下来,我帮你拆解下问题根源,再给你调整后的代码~

问题出在哪?

  1. 超时分支的递归传参错误:当触发超时异常时,你调用ask_question(num_qus),这里传的还是原来的题目数,没有减1!相当于每次超时都重新开始一轮相同题量的出题,永远不会走到终止条件。
  2. 终止条件位置完全错了:你把if num_qus == 0: quit()放在了递归调用之后,这行代码永远不会执行——因为递归调用会直接跳转到新的函数执行,后面的代码直接被跳过了。
  3. 正常答题后的逻辑缺失:在try块里答对题目后,你只减了题目数,但没有继续调用下一题,导致正常答完一道题程序就结束了,反而超时的时候会无限循环,逻辑完全反过来了😂

调整后的代码

我把逻辑重新梳理了下,确保每道题处理完(不管答对还是超时)都正确减少剩余题量,且终止条件放在最前面:

import random  
from inputimeout import inputimeout, TimeoutOccurred  

# 先把输入转成int,避免函数里重复转换,也能提前发现输入错误
input("press enter to start")  
lowest_numb = int(input("lowest number: "))  
highish_numb = int(input("highest number: "))  # 变量名改得更直观了点
time_for_qus = int(input("time per question (seconds): "))  
total_qus = int(input("How many questions? "))  

def ask_question(remaining_qus):
    # 先检查剩余题量,没题了直接终止
    if remaining_qus <= 0:
        print("\nAll questions finished!")
        return
    
    # 生成乘法题
    ran_1 = random.randint(lowest_numb, highish_numb)  
    ran_2 = random.randint(lowest_numb, highish_numb)  
    print(f"\nQuestion {total_qus - remaining_qus + 1}: {ran_1}x{ran_2} = ", end="")
    
    try:
        # 等待用户输入答案
        answer = inputimeout(prompt="", timeout=time_for_qus)
        # 这里可以加个答案正确性判断,比如:
        # if int(answer) == ran_1 * ran_2:
        #     print("Correct!")
        # else:
        #     print(f"Wrong! The right answer is {ran_1*ran_2}")
    except TimeoutOccurred:
        print("\nTimes up!!!")
    
    # 处理完当前题,剩余题量减1,继续下一题
    ask_question(remaining_qus - 1)

# 启动出题
ask_question(total_qus)

调整说明

  • 把输入的数字提前转成int,减少函数里的重复操作,也能在输入阶段就捕获非数字的错误。
  • 函数开头先判断剩余题量,没题了直接return终止递归,这是最关键的终止逻辑。
  • 不管是答对还是超时,处理完当前题目后统一调用下一题,传递remaining_qus - 1,确保每道题都正确消耗题量。
  • 加了题目序号打印,看起来更清晰(这个是可选优化,你可以删掉)。

这样修改后,程序就会严格按照你设置的题目数量出题,完成后自动终止啦~

备注:内容来源于stack exchange,提问作者user29961513

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:40:26