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

game()函数while循环计时重置异常:满足条件时if分支未执行

问题分析与修复方案

核心问题:条件判断无法触发的原因

input()函数返回的是字符串类型,而你定义的var = 1是整数类型,字符串与整数直接用==比较永远不相等,因此if (hello == var)的条件永远不会成立,代码块自然不会执行。

修复步骤

1. 修正类型不匹配问题

将输入内容转换为整数,或者把var定义为字符串,二选一即可:

  • 方案一:转换输入类型
hello = int(input("reset time: "))
  • 方案二:调整变量类型
var = "1"

2. 优化计时逻辑(更严谨的实现)

如果不想使用全局变量,可以直接在game()函数内重置计时,代码更简洁且避免全局变量的副作用:

import time

def game(): 
    gametime = time.time() + 10
    print("Seconds since epoch =", gametime)    
    var = 1
    while time.time() < gametime:
        print("hello")
        try:
            # 捕获输入非数字的异常,避免程序崩溃
            hello = int(input("reset time: "))
        except ValueError:
            print("请输入有效数字!")
            continue
        print("test1")
        if hello == var:
            print("test")
            print("重置前的gametime:", gametime)
            gametime = time.time() + 10
            print("重置后的gametime:", gametime)

    print("time is up")

game()

3. 保留全局变量的修复版本

如果坚持使用reset()函数,只需先解决类型匹配问题,全局变量的更新会自动被循环条件识别:

import time
gametime = time.time() + 10

def game(): 
    print("Seconds since epoch =", gametime)    
    var = 1
    while time.time() < gametime:
        print("hello")
        try:
            hello = int(input("reset time: "))
        except ValueError:
            print("请输入数字!")
            continue
        print("test1")
        if hello == var:
            print("test")
            print(gametime)
            reset()

    print("time is up")

def reset():
    global gametime
    gametime = time.time() + 10

game()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:55:17