励学益研网

夏期辅导2,如何高效提升暑期学习效果?

这次我们选择一个稍微深入一点,但非常实用且有趣的主题:用Python制作一个简单的猜数字游戏

夏期辅导2,如何高效提升暑期学习效果?-图1

这个项目非常适合初学者,因为它会涵盖以下几个核心概念:

  • 变量:存储信息(比如秘密数字、玩家的猜测)。
  • 用户输入:获取玩家的操作。
  • 条件判断if, elif, else,用来判断猜测是否正确、太大或太小。
  • 循环while,让游戏可以持续进行,直到玩家猜对。
  • 类型转换:将玩家输入的文本(字符串)转换成数字(整数)。
  • 随机数:让每次游戏的秘密数字都不同。

项目目标:猜数字游戏

游戏规则:

  1. 电脑会随机想一个1到100之间的整数。
  2. 玩家需要通过键盘输入自己猜的数字。
  3. 电脑会给出提示:“猜大了!”、“猜小了!”或者“恭喜你,猜对了!”。
  4. 游戏会记录玩家猜了多少次,并在猜对后显示出来。
  5. 玩家可以选择是否再玩一次。

准备工作

确保你的电脑上已经安装了Python,如果没有,可以从Python官网 (python.org) 下载并安装,安装时,请记得勾选 "Add Python to PATH" 选项。

打开你喜欢的代码编辑器(VS Code, PyCharm,或者 even Windows 自带的记事本),新建一个文件,命名为 guess_number.py


编写代码

我们将分块来写代码,并解释每一部分的作用。

第一部分:导入随机数模块

要生成随机数,我们需要使用Python内置的 random 模块,模块是包含许多有用功能的“工具箱”。

import random

解释:

  • import 是Python的关键字,意思是“导入”。
  • random 是Python的一个标准模块,专门用来处理随机数。

第二部分:定义游戏主逻辑

这是游戏的核心部分,我们把它放在一个 while True 循环里,这样玩家就可以“一直玩下去”,直到选择退出。

# --- 游戏主循环 ---
while True:
    # 1. 生成秘密数字
    secret_number = random.randint(1, 100)
    guess_count = 0  # 初始化猜测次数
    print("\n欢迎来到猜数字游戏!我已经想好了一个1到100之间的数字。")
    # 2. 循环,直到玩家猜对
    while True:
        # 3. 获取玩家的猜测
        try:
            # input() 函数获取的是字符串,需要用 int() 转换成整数
            guess_str = input("请输入你猜的数字: ")
            guess = int(guess_str)
            guess_count += 1  # 每次猜测后,次数加1
            # 4. �猜的数字大小
            if guess < secret_number:
                print("猜小了!")
            elif guess > secret_number:
                print("猜大了!")
            else:
                print(f"恭喜你,猜对了!你一共猜了 {guess_count} 次。")
                break  # 猜对了,就跳出内部的 while True 循环
        except ValueError:
            # 如果玩家输入的不是数字,会触发这个错误
            print("输入无效,请输入一个1到100之间的整数!")
    # 5. 询问玩家是否再玩一次
    play_again = input("想再玩一次吗?(yes/no): ")
    if play_again.lower() != 'yes':
        print("游戏结束,下次再见!")
        break  # 玩家不想再玩了,就跳出外部的 while True 循环

完整代码与逐行解析

下面是完整的代码,你可以直接复制粘贴到你的 guess_number.py 文件中。

# guess_number.py
# 导入 random 模块,用于生成随机数
import random
# --- 游戏主循环 ---
# 使用 while True 可以让游戏一直重复,直到玩家主动退出
while True:
    # 1. 游戏初始化
    # random.randint(a, b) 会生成一个 a 到 b 之间的随机整数(包含a和b)
    secret_number = random.randint(1, 100)
    guess_count = 0  # 初始化猜测次数为0
    print("\n欢迎来到猜数字游戏!我已经想好了一个1到100之间的数字。")
    # 2. 猜测循环
    # 这个循环会一直运行,直到玩家猜对数字
    while True:
        # 3. 获取用户输入
        try:
            # input() 函数会暂停程序,等待用户在键盘上输入并按回车
            # input() 返回的是一个字符串类型
            guess_str = input("请输入你猜的数字: ")
            # 因为我们要做数学比较,所以需要把字符串转换成整数
            # int() 函数可以完成这个转换
            guess = int(guess_str)
            # 每次有效猜测后,猜测次数加1
            guess_count += 1
            # 4. 判断猜测结果
            # 使用 if-elif-else 结构来比较玩家猜测的数字和秘密数字
            if guess < secret_number:
                # 如果猜的数字比秘密数字小
                print("猜小了!")
            elif guess > secret_number:
                # 如果猜的数字比秘密数字大
                print("猜大了!")
            else:
                # 如果猜的数字和秘密数字相等,猜对了!
                # 使用 f-string (f"...") 来格式化字符串,方便地嵌入变量
                print(f"恭喜你,猜对了!你一共猜了 {guess_count} 次。")
                # 猜对了,就使用 break 语句跳出内部的 "猜测循环"
                break
        except ValueError:
            # 如果用户输入的不是纯数字("abc" 或 "12.3")
            # int() 函数会抛出 ValueError 错误
            # 我们用 try-except 结构来捕获这个错误,并提示用户
            print("输入无效,请输入一个1到100之间的整数!")
    # 5. 询问是否再玩一次
    # 当玩家猜对后,会执行到这里
    play_again = input("想再玩一次吗?(yes/no): ")
    # .lower() 方法可以将用户的输入全部转为小写,这样输入 "Yes", "YES", "yes" 都可以
    if play_again.lower() != 'yes':
        # 如果玩家输入的不是 "yes",就打印告别信息
        print("游戏结束,下次再见!")
        # 然后使用 break 语句跳出外部的 "游戏主循环",程序结束
        break

运行和测试

  1. 保存你的 guess_number.py 文件。
  2. 打开你的终端或命令提示符。
  3. 使用 cd 命令切换到你保存文件的目录。cd C:\Users\YourName\Desktop
  4. 运行程序:在终端中输入 python guess_number.py 然后按回车。

你就可以开始玩游戏了!尝试猜几次,看看程序是否按预期工作,试着输入一些非数字,看看程序会不会优雅地处理错误。


拓展与挑战

你已经完成了基础版本,现在可以尝试给它增加一些新功能,让它变得更有趣:

  1. 限制猜测次数:比如只给玩家7次猜测机会,如果7次都没猜对,游戏就结束,并公布正确答案。

    • 提示:在内部的 while 循环条件中加入 and guess_count < 7
  2. 增加难度选择:让玩家可以选择难度,比如简单(1-50)、中等(1-100)、困难(1-200)。

    • 提示:在游戏开始时,用 input() 询问玩家难度,然后用 if-elif 来设置 secret_number 的范围。
  3. 增加计分系统:每次猜对,根据猜测次数给予不同的分数(比如猜1次得100分,猜2次得90分...),最后可以显示总分。

    • 提示:创建一个 total_score 变量,在猜对时根据 guess_count 计算本次得分并累加。
  4. 增加“提示”功能:在玩家猜错几次后,告诉玩家“这个数字是偶数”或“这个数字的十位数是5”。

    • 提示:可以设置一个 hint_count 变量,当 guess_count 达到某个值时,给出提示。

这些挑战能帮助你更好地理解和运用这些编程概念,如果卡住了,随时可以再来问我!祝你编码愉快!

分享:
扫描分享到社交APP
上一篇
下一篇