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
相关产品推荐
相关产品推荐

