如何在不使用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
相关产品推荐
相关产品推荐

