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

Python新手求助:如何为猜数字代码添加while循环

为猜数字游戏添加重复猜测的实现方向

作为Python新手,你可以通过以下几种常见方式给代码添加while循环,实现重复猜测逻辑:


方向1:循环直到猜中目标数字

核心思路:先生成一个固定的随机数,让用户反复输入猜测,直到猜中为止,同时保留输入合法性校验。

修改后的代码:

import random  # 原代码遗漏random模块导入,需补充

def generate_random():
    number = random.randint(1,10)
    return number

def main():
    random_number = generate_random()  # 提前生成唯一目标数字
    while True:
        try:
            guessed_number = int(input("Please select a number between 1 and 10 "))
        except ValueError:
            print("Please enter a valid integer!")
            continue
        
        if 1 <= guessed_number <= 10:
            if guessed_number == random_number:
                print("Successful guess!")
                break  # 猜中后终止循环
            else:
                print("Unsuccessful guess, try again!")
        else:
            print("You need to choose a number between 1 and 10")

if __name__ == "__main__":
    main()

关键点:

  • 将目标随机数生成移到循环外,确保游戏全程目标不变
  • 用while True创建无限循环,猜中后通过break退出
  • 增加try-except处理非数字输入,避免程序崩溃

方向2:限制最大猜测次数

给游戏增加难度,设置最多猜测次数,用完次数未猜中则结束游戏并揭晓答案。

修改后的代码:

import random

def generate_random():
    number = random.randint(1,10)
    return number

def main():
    random_number = generate_random()
    max_attempts = 3
    attempts = 0
    
    while attempts < max_attempts:
        try:
            guessed_number = int(input(f"Please select a number between 1 and 10 (you have {max_attempts - attempts} attempts left) "))
        except ValueError:
            print("Please enter a valid integer!")
            continue
        
        attempts += 1
        if 1 <= guessed_number <= 10:
            if guessed_number == random_number:
                print("Successful guess!")
                break
            else:
                if attempts < max_attempts:
                    print("Unsuccessful guess, try again!")
                else:
                    print(f"Game over! The correct number was {random_number}")
        else:
            print("You need to choose a number between 1 and 10")
            attempts -= 1  # 非法输入不消耗次数

if __name__ == "__main__":
    main()

关键点:

  • 用attempts计数,结合max_attempts控制循环终止条件
  • 非法输入不减少剩余次数,优化用户体验
  • 次数耗尽后主动告知正确答案

方向3:允许用户主动退出游戏

除猜中或次数耗尽外,支持用户输入特定字符(如q)主动退出游戏。

修改后的代码:

import random

def generate_random():
    number = random.randint(1,10)
    return number

def main():
    random_number = generate_random()
    while True:
        user_input = input("Please select a number between 1 and 10 (or enter 'q' to quit) ")
        
        if user_input.lower() == 'q':
            print(f"Quitting game! The correct number was {random_number}")
            break
        
        try:
            guessed_number = int(user_input)
        except ValueError:
            print("Please enter a valid integer or 'q' to quit!")
            continue
        
        if 1 <= guessed_number <= 10:
            if guessed_number == random_number:
                print("Successful guess!")
                break
            else:
                print("Unsuccessful guess, try again!")
        else:
            print("You need to choose a number between 1 and 10")

if __name__ == "__main__":
    main()

关键点:

  • 先判断用户输入是否为退出指令,再处理数字转换
  • 退出时同步告知用户正确答案
  • 保留输入合法性校验逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:13:31