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

如何在不使用break的情况下循环猜数字游戏直至用户终止

解决猜数字游戏的循环运行问题(不使用break)

问题分析

当前代码的核心问题是仅执行了一次游戏流程,且游戏函数内的"是否继续"选择没有传递到主逻辑中,无法触发新一轮游戏。以下是不使用break语句的修复方案:

修改后的完整代码

import random

def set_number():
    return random.randint(1, 500)

# 执行单轮游戏,返回用户是否继续的选择
def number_guessing_game(number):
    guess_counter = 0
    guess = int(input("Enter a number between 1 and 500: "))
    
    while guess != number:
        guess_counter += 1
        if guess > number:
            print("You guessed too high. Try Again!")
        else:
            print("You guessed too low. Try Again!")
        guess = int(input("Enter a number between 1 and 500: "))
    
    # 猜中后统计总次数并询问是否继续
    guess_counter += 1
    print(f"You guessed the number! Good Job. You took {guess_counter} guesses!")
    again = input("Would you like to play again? Enter 'y' for yes or 'n' to close the game: ").strip().lower()
    return again

def main():
    print("Welcome to the Number Guessing Game!\n"
          "You will have unlimited guesses. The number is between 1 and 500.\n"
          "Good Luck!")
    
    play_again = 'y'
    while play_again == 'y':
        number = set_number()
        play_again = number_guessing_game(number)
    
    print("Thanks for playing!")

main()

关键改动说明

  • 模块导入优化:将import random移到代码顶部,避免每次调用set_number重复导入,符合Python编码规范。
  • 游戏函数返回值:让number_guessing_game返回用户的"继续游戏"选择,为主逻辑的循环控制提供依据。
  • 循环逻辑重构:在main函数中添加while循环,以用户的选择作为循环条件,只要输入y就重新生成随机数并启动新一轮游戏。
  • 输入处理优化:使用.strip().lower()统一用户输入格式,避免大小写或空格导致的判断错误;同时简化重复的输入代码,让逻辑更清晰。
  • 计数准确性:给猜中的那次猜测也计数,确保总次数统计正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:55:18