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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:45:05