Python无循环实现1-32猜数字游戏 最多5次机会猜对即终止
无循环猜数字游戏修复方案
你现有代码的问题是猜对后没有终止脚本运行,依旧会执行后续的输入逻辑。我们可以通过内置模块直接终止程序,或者用递归实现重复逻辑,两种方案都完全符合「不使用循环」的要求。
方案1:最小改动适配你原有代码
仅新增2行代码即可实现猜对即终止的效果:
import random import sys random.seed() # 原随机数逻辑保留,也可以替换为更简洁的 number = random.randint(1,32) number = round((random.random()*32)+0.5) def G(): if guess > number: print("Lower...") else: print("Higher...") return False def W(): print("Correct!") print("You win!") # 猜对后直接终止脚本,不再执行后续代码 sys.exit() guess = int(input("Take a guess")) if guess==number: W() else: G() guess = int(input("Try again")) if guess==number: W() else: G() guess = int(input("Try again")) if guess==number: W() else: G() guess = int(input("Try again")) if guess==number: W() else: G() guess = int(input("Try again")) if guess==number: W() else: print("You lose!")
核心逻辑:sys是Python内置模块,sys.exit()调用后会直接终止当前运行的Python脚本,只要猜对触发W()函数就会立刻结束游戏。
方案2:递归实现更简洁的无循环代码
如果不想额外导入模块,可以用函数递归实现重复逻辑,代码冗余度更低:
import random random.seed() number = random.randint(1,32) def guess_game(remain_times): # 根据剩余次数显示不同输入提示 guess = int(input("Take a guess" if remain_times == 5 else "Try again")) # 猜对直接返回终止逻辑 if guess == number: print("Correct!") print("You win!") return # 次数用完提示失败 if remain_times == 1: print("You lose!") return # 提示大小后递归调用,剩余次数减1 print("Lower..." if guess > number else "Higher...") guess_game(remain_times - 1) # 初始传入5次机会 guess_game(5)
核心逻辑:通过函数调用自身实现重复猜测逻辑,没有使用任何for/while循环,完全符合开发限制。
内容的提问来源于stack exchange,提问作者Chris Neill
相关产品推荐
相关产品推荐

