🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Python 3:猜数字 > 原文: [https://javabeginnerstutorial.com/python-tutorial/python-3-guess-the-number-2/](https://javabeginnerstutorial.com/python-tutorial/python-3-guess-the-number-2/) 现在,让我们编写一个脚本,该脚本实现一个基本的“猜数字”游戏。 游戏规则为: * 用户选择是否要猜测 1 到 100 或 1 到 1000 之间的数字 * 根据数字范围,用户拥有固定数目的猜测 * 应用生成一个数字进行猜测 * 用户输入一个数字 * 如果这是秘密号码,则应用祝贺用户并询问他/她是否想再玩一轮 * 否则,应用会告诉用户密码是否小于或大于提供的密码 * 猜测数增加 * 如果用户用尽了所有猜测,则应用告诉他/她的秘密号码,并询问用户是否要再玩一轮 如您所见,规则很简单,但实现起来似乎很复杂。 由您决定如何处理错误的输入类型(无数字)。 好吧,这并不像听起来那样困难。 让我们看一下我的解决方案的一些示例输出: ```py Should the secret number between 1 and 100 or 1 and 1000? 100 You have chosen 100, you will have 7 guesses to find the secret number. I have chosen the secret number... What's your guess? 34 The secret number is higher... What's your guess? 54 The secret number is higher... What's your guess? 66 Congrats, you have Won! The secret number was 66 Do you want to play another round? (yes / no) yes Should the secret number between 1 and 100 or 1 and 1000? 1000 You have chosen 1000, you will have 10 guesses to find the secret number. I have chosen the secret number... What's your guess? 500 The secret number is lower... What's your guess? 400 The secret number is lower... What's your guess? 300 The secret number is higher... What's your guess? 350 The secret number is higher... What's your guess? 375 The secret number is lower... What's your guess? 370 The secret number is lower... What's your guess? 360 The secret number is higher... What's your guess? 365 The secret number is lower... What's your guess? 364 The secret number is lower... What's your guess? 363 The secret number is lower... Sorry, you lose. The secret number was 362 Do you want to play another round? (yes / no) no ``` 如您所见,当猜测用完时,应用不会停止,并且如果用户获胜或失败,它会显示一条消息。 让我们看一下代码。 ```py __author__ = 'GHajba' import random while True: while True: try: max_number = int(input('Should the secret number between 1 and 100 or 1 and 1000? ')) except ValueError: print("This was not a number!") continue if max_number != 100 and max_number != 1000: continue else: break if max_number == 100: guess_count = 7 else: guess_count = 10 print('You have chosen {}, you will have {} guesses to find the secret number.'.format(max_number, guess_count)) secret_number = random.randint(1, max_number) print('I have chosen the secret number...') guesses = 0 while guess_count - guesses: try: guesses += 1 guessed = int(input("What's your guess? ")) except ValueError: continue if guessed == secret_number: print('Congrats, you have Won!') break elif guessed > secret_number: print('The secret number is lower...') else: print('The secret number is higher...') else: print("Sorry, you lose.") print("The secret number was ", secret_number) answer = '' while answer.lower() not in ['yes', 'no', 'y', 'n']: answer = input("Do you want to play another round? (yes / no) ") if 'no' == answer or 'n' == answer: break ``` 如您所见,代码非常繁琐,因为我们包含许多循环来验证输入并处理主游戏循环。 也许您以后会发现此代码根本不可读。 为了解决这个问题,我们将学习函数,然后重构这部分代码以使用函数。 但是,此脚本也有一些替代解决方案。 例如,您可以将中间的`while`循环更改为`for`循环: ```py for guesses in range(guess_count): ``` 在这种情况下,循环遍历猜测范围,如果到达最后一个数字,则循环结束。