如何让两个Python函数共享计数变量?猜数字游戏问题求助
解决猜数字游戏的计数共享问题
你的核心问题是计数变量count被局限在函数内部,无法跨函数、跨异常分支共享,同时原代码的输入处理逻辑拆分不合理,导致计数重置或无法传递。下面是修复后的完整代码,同时梳理了逻辑:
print("Guess the secret number! Hint: it's an integer between 1 and 100...") secret_num = 26 count = 0 def get_valid_guess(): """获取合法的整数猜测值,处理非整数输入""" while True: try: return int(input("What is your guess? ")) except ValueError: print("Bad input! Try again: ") # 主游戏逻辑 while True: guess = get_valid_guess() count += 1 if guess == secret_num: print(f"You guessed it! It took you {count} guesses.") break elif guess > secret_num: print("Too high!") else: print("Too low!")
关键改进点:
- 把
count放在全局作用域(主逻辑)统一维护,避免函数间传递的麻烦 - 单独用
get_valid_guess函数处理输入合法性,不用拆分两个游戏逻辑函数,简化结构 - 每次成功获取合法猜测后就累加计数,不管猜的对不对,确保计数准确
- 主循环统一处理猜数字的判断逻辑,避免重复代码
原代码的问题拆解:
- 初始
guess = int(input(...))会直接抛出异常,没机会进入int_guess函数,导致except分支里的count根本未定义 int_guess里的count是局部变量,not_int_guess无法访问;就算传递参数,两个函数的计数也是各自独立的,无法累加not_int_guess内部没有正确累加计数,逻辑和int_guess重复,易出错
内容的提问来源于stack exchange,提问作者BryceD3
相关产品推荐
相关产品推荐

