【Dison夏令营 Day 04】如何用 Python 编写简单的数字猜谜游戏代码

上个周末,我整理了一份可以用 Python 编写的游戏列表。但为什么呢?

如果您是 Python 程序员初学者,编写有趣的游戏可以帮助您更快更好地学习 Python 语言,而不会被语法之类的东西所困扰。我在学习 Python 的时候曾制作过一些这样的游戏;我非常享受这个过程!

你可以编写的第一个游戏,也是最简单的一个游戏,就是猜数字游戏(或者叫 “猜数字”!)。因此,我想写一篇循序渐进的教程来编写这个游戏的代码,并帮助初学者学习一些基础知识。

Let’s begin!

在这里插入图片描述

数字竞猜游戏是如何进行的?

在数字竞猜游戏中,用户要在给定的尝试次数内猜出一个随机生成的秘密数字。

每次猜测之后,用户都会得到提示,告诉他们猜测的数字是过高、过低还是正确。是的,当用户猜中秘密数字或尝试次数用完时,游戏就结束了。

数字猜谜游戏编码

让我们开始编码吧!创建一个新的 Python 脚本并开始编码。

第 1 步 - 导入随机模块

让我们从导入内置 random 模块开始。random 模块中的函数可以用来生成指定范围内的随机秘密数字:

import random

注意random模块给出的是伪随机数,而不是真正的随机数。因此,请勿将其用于密码生成等敏感应用。

第 2 步 - 设置范围和最大尝试次数

接下来,我们需要确定秘密号码的范围和允许玩家尝试的最大次数。在本教程中,我们把 lower_boundupper_bound 分别设为 1 和 1000。另外,将允许的最大尝试次数 max_attempts 设为 10:

lower_bound = 1
upper_bound = 1000
max_attempts = 10

第 3 步 - 生成随机数

现在,让我们使用 random.randint() 函数在指定范围内生成一个随机数。这就是用户需要猜测的秘密数字:

secret_number = random.randint(lower_bound, upper_bound)

第 4 步 - 读取用户输入信息

为了获取用户的输入,让我们创建一个名为 get_guess() 的函数。记住,用户可以输入无效输入:超出 [lower_bound, upper_bound] 范围的数字、字符串或浮点数等。

我们将在 get_guess() 函数中处理这种情况,该函数会不断提示用户输入一个数字–在指定范围内–直到他们提供一个有效的输入。

在这里,我们使用 while 循环来提示用户输入有效输入,直到他们输入一个介于 lower_boundupper_bound 之间的整数:

def get_guess():
    while True:
        try:
            guess = int(input(f"Guess a number between {lower_bound} and {upper_bound}: "))
            if lower_bound <= guess <= upper_bound:
                return guess
            else:
                print("Invalid input. Please enter a number within the specified range.")
        except ValueError:
            print("Invalid input. Please enter a valid number.")

第 5 步 - 验证用户的猜测

接下来,让我们定义一个 check_guess() 函数,它将用户的猜测和秘密数字作为输入,并就猜测是否正确、过高或过低提供反馈。

该函数将玩家的猜测与秘密数字进行比较,并返回相应的信息:

def check_guess(guess, secret_number):
    if guess == secret_number:
        return "Correct"
    elif guess < secret_number:
        return "Too low"
    else:
        return "Too high"

第 6 步 - 跟踪尝试次数并检测游戏结束条件

现在我们将创建函数 play_game(),该函数负责处理游戏逻辑并将所有内容整合在一起。该函数使用 attempts 变量来跟踪用户的尝试次数。在一个 while 循环中,用户会被提示输入一个猜测,并由 get_guess() 函数进行处理。

调用 check_guess() 函数可以获得用户猜测的反馈信息:

  • 如果猜测正确,用户获胜,游戏结束。
  • 否则,用户将获得另一次猜测机会。
  • 这个过程一直持续到玩家猜中秘密数字或猜完为止。
    下面是 play_game() 函数:
def play_game():
    attempts = 0
    won = False

    while attempts < max_attempts:
        attempts += 1
        guess = get_guess()
        result = check_guess(guess, secret_number)

        if result == "Correct":
            print(f"Congratulations! You guessed the secret number {secret_number} in {attempts} attempts.")
            won = True
            break
        else:
            print(f"{result}. Try again!")

    if not won:
        print(f"Sorry, you ran out of attempts! The secret number is {secret_number}.")

第 7 步 - 玩游戏!

最后,每次运行 Python 脚本时,都可以调用 play_game() 函数:

if __name__ == "__main__":
    print("Welcome to the Number Guessing Game!")
    play_game()

将所有内容整合在一起

现在我们的 Python 脚本是这样的

# main.py
import random

# define range and max_attempts
lower_bound = 1
upper_bound = 1000
max_attempts = 10

# generate the secret number
secret_number = random.randint(lower_bound, upper_bound)

# Get the user's guess
def get_guess():
    while True:
        try:
            guess = int(input(f"Guess a number between {lower_bound} and {upper_bound}: "))
            if lower_bound <= guess <= upper_bound:
                return guess
            else:
                print("Invalid input. Please enter a number within the specified range.")
        except ValueError:
            print("Invalid input. Please enter a valid number.")

# Validate guess
def check_guess(guess, secret_number):
    if guess == secret_number:
        return "Correct"
    elif guess < secret_number:
        return "Too low"
    else:
        return "Too high"

# track the number of attempts, detect if the game is over
def play_game():
    attempts = 0
    won = False

    while attempts < max_attempts:
        attempts += 1
        guess = get_guess()
        result = check_guess(guess, secret_number)

        if result == "Correct":
            print(f"Congratulations! You guessed the secret number {secret_number} in {attempts} attempts.")
            won = True
            break
        else:
            print(f"{result}. Try again!")

    if not won:
        print(f"Sorry, you ran out of attempts! The secret number is {secret_number}.")

if __name__ == "__main__":
    print("Welcome to the Number Guessing Game!")
    play_game()

下面是脚本运行样本的输出结果:

Welcome to the Number Guessing Game!
Guess a number between 1 and 1000: 500
Too low. Try again!
Guess a number between 1 and 1000: 750
Too high. Try again!
Guess a number between 1 and 1000: 625
Too low. Try again!
Guess a number between 1 and 1000: 685
Too low. Try again!
Guess a number between 1 and 1000: 710
Too low. Try again!
Guess a number between 1 and 1000: 730
Congratulations! You guessed the secret number 730 in 6 attempts.

结束

恭喜你您已经成功地用 Python 构建了一个数字竞猜游戏。我们很快会在另一个教程中再见。不过,别等我了。Python很有趣的,你也可以在互联网上找到更多有意思的代码和程序哦!

感谢大家花时间阅读我的文章,你们的支持是我不断前进的动力。期望未来能为大家带来更多有价值的内容,请多多关注我的动态!

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值