20252320 2025-2026-2 《Python程序设计》实验1报告

课程:《Python程序设计》
班级: XXXX
姓名: 陈冠宇
学号:20252320
实验教师:王志强
实验日期:2026年3月23日
必修/选修: 公选课

1.实验内容
1.熟悉Python开发环境;

介绍Python开发环境的各项功能。

2.练习Python运行、调试技能;

编写书中的程序,并进行调试分析,要有过程(运行需要截图、调试需要截图)。

3.编写程序,练习变量和类型、字符串、对象、缩进和注释等;

编写一个猜数字的游戏。

4.利用LLM生成猜数字的游戏。
运行并给出相应的截图。
对比你写的Python程序,分析LLM生成代码的优点,至少写3个。
5. 掌握git技能

需要把编写的代码托管到Gitee上,给出托管过程和结果,并在此放上链接(Markdown格式)

  1. 实验过程及结果
    Pycharm作为开发环境

屏幕截图 2026-05-12 124544

屏幕截图 2026-05-12 124748
猜数字游戏代码:
`import random

def guess_number_game():

print("=" * 40)
print("    欢迎来到猜数字游戏!")
print("=" * 40)
print("游戏规则:")
print("1. 系统随机生成1-100之间的数字")
print("2. 你有10次机会猜中这个数字")
print("3. 每次猜测后会有提示")
print("=" * 40)

secret_number = random.randint(1, 100)
max_attempts = 10
attempts = 0

while attempts < max_attempts:
    attempts += 1
    remaining = max_attempts - attempts + 1
    
    print(f"\n第{attempts}次猜测,还剩{remaining}次机会")
    
    try:
        guess = input("请输入你猜的数字(1-100): ")
        guess = int(guess)
        
        if guess < 1 or guess > 100:
            print("提示:请输入1-100之间的数字!")
            attempts -= 1  # 不消耗次数
            continue
        if guess == secret_number:
            print(f"\n恭喜你!猜对了!")
            print(f"答案就是{secret_number}")
            print(f"你用了{attempts}次猜中")
            break
        elif guess < secret_number:
            print("猜小了!再大一点")
        else:
            print("猜大了!再小一点")
            
    except ValueError:
        print("输入无效,请输入一个数字!")
        attempts -= 1  # 不消耗次数

if attempts == max_attempts and guess != secret_number:
    print(f"\n很遗憾,你没有猜中!")
    print(f"正确答案是: {secret_number}")

# 询问是否重玩
play_again = input("\n是否再玩一局?(y/n): ").lower()
if play_again == 'y' or play_again == 'yes':
    guess_number_game()
else:
    print("\n感谢游戏,再见!")

if name == "main":
guess_number_game()表现 ![屏幕截图 2026-05-12 125045](https://img2024.cnblogs.com/blog/3788288/202605/3788288-20260512125104108-130196092.png) llm生成的代码:import random
import time
import json
import os
from datetime import datetime

class GuessNumberGame:
"""猜数字游戏类 - 增强版"""

def __init__(self):
    """初始化游戏配置"""
    self.min_num = 1
    self.max_num = 100
    self.max_attempts = 10
    self.records_file = "game_records.json"
    self.high_scores = self.load_records()

def load_records(self):
    """加载历史记录"""
    if os.path.exists(self.records_file):
        try:
            with open(self.records_file, 'r', encoding='utf-8') as f:
                return json.load(f)
        except:
            return []
    return []

def save_record(self, attempts, won):
    """保存游戏记录"""
    record = {
        "date": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
        "attempts": attempts,
        "won": won,
        "range": f"{self.min_num}-{self.max_num}"
    }
    self.high_scores.append(record)
    # 只保留最近10条记录
    self.high_scores = self.high_scores[-10:]
    with open(self.records_file, 'w', encoding='utf-8') as f:
        json.dump(self.high_scores, f, indent=2, ensure_ascii=False)

def display_high_scores(self):
    """显示历史记录"""
    if not self.high_scores:
        print("\n暂无历史记录")
        return

    print("\n" + "=" * 50)
    print("历史游戏记录")
    print("=" * 50)
    for i, record in enumerate(self.high_scores, 1):
        status = "🎉 胜利" if record["won"] else "😔 失败"
        print(f"{i}. {record['date']} | {status} | 尝试次数: {record['attempts']}")
    print("=" * 50)

def get_difficulty(self):
    """选择难度"""
    print("\n请选择难度:")
    print("1. 简单 (1-50, 15次机会)")
    print("2. 普通 (1-100, 10次机会)")
    print("3. 困难 (1-200, 7次机会)")
    print("4. 地狱 (1-500, 5次机会)")

    choice = input("请输入选项(1-4): ")

    difficulty_map = {
        "1": (1, 50, 15),
        "2": (1, 100, 10),
        "3": (1, 200, 7),
        "4": (1, 500, 5)
    }

    if choice in difficulty_map:
        self.min_num, self.max_num, self.max_attempts = difficulty_map[choice]
    else:
        print("输入无效,使用默认难度(普通)")
        self.min_num, self.max_num, self.max_attempts = 1, 100, 10

    print(f"\n难度已设置:数字范围{self.min_num}-{self.max_num},{self.max_attempts}次机会")

def give_hint(self, guess, secret, attempts):
    """提供智能提示"""
    diff = abs(guess - secret)
    if diff <= 5:
        return "🔥 非常接近了!"
    elif diff <= 10:
        return "⚡ 比较接近了"
    elif diff <= 20:
        return "📊 还有一定距离"
    else:
        return "🎯 相差较远"

def play(self):
    """运行游戏主循环"""
    # 显示欢迎界面
    print("\n" + "🎮" * 20)
    print("     欢迎来到猜数字游戏!")
    print("🎮" * 20)

    # 选择难度
    self.get_difficulty()

    # 显示历史记录
    self.display_high_scores()

    # 生成随机数
    secret_number = random.randint(self.min_num, self.max_num)
    attempts = 0
    guessed = False

    print(f"\n游戏开始!数字范围:{self.min_num} ~ {self.max_num}")
    print(f"你有{self.max_attempts}次机会\n")

    start_time = time.time()

    while attempts < self.max_attempts and not guessed:
        attempts += 1
        remaining = self.max_attempts - attempts

        try:
            # 获取用户输入
            guess_input = input(f"[尝试 {attempts}/{self.max_attempts}] 请输入数字: ")
            guess = int(guess_input)

            # 输入验证
            if guess < self.min_num or guess > self.max_num:
                print(f"❌ 请输入{self.min_num}-{self.max_num}之间的数字!")
                attempts -= 1
                continue

            # 判断结果
            if guess == secret_number:
                end_time = time.time()
                elapsed = end_time - start_time
                guessed = True
                print(f"\n🎉 恭喜你猜对了!")
                print(f"🎯 答案就是: {secret_number}")
                print(f"⏱️  用时: {elapsed:.2f}秒")
                print(f"📊 尝试次数: {attempts}")

                # 评分系统
                score = max(100 - (attempts - 1) * 5, 40)
                print(f"🏆 本局得分: {score}")

                self.save_record(attempts, True)

            elif guess < secret_number:
                print(f"📈 猜小了! {self.give_hint(guess, secret_number, attempts)}")
            else:
                print(f"📉 猜大了! {self.give_hint(guess, secret_number, attempts)}")

            # 提示剩余次数
            if remaining > 0 and not guessed:
                print(f"💡 还剩{remaining}次机会")

        except ValueError:
            print("❌ 请输入有效的数字!")
            attempts -= 1

            # 游戏结束
            if not guessed:
                print(f"\n😔 很遗憾,机会用完了!")
                print(f"🎯 正确答案是: {secret_number}")
                self.save_record(attempts, False)

            # 重玩逻辑
            self.play_again()

        def play_again(self):
            """询问是否重玩"""
            print("\n" + "-" * 40)
            choice = input("是否再玩一局?(y/n): ").lower()
            if choice in ['y', 'yes', '是']:
                self.play()
            else:
                print("\n感谢游玩!再见!👋")`

对比LLM生成代码的优点:
图像更丰富,有更高的提示范围和功能
3. 实验过程中遇到的问题和解决过程
问题1:PyCharm调试器使用不熟练

现象:设置断点后不知道如何查看变量值

解决:
学习使用Debug模式
在调试窗口查看Variables面板
使用Alt+F8添加监视表达式
使用Step Over(F8)/Step Into(F7)控制执行流程
问题2:Git推送失败
现象:error: failed to push some refs to remote
解决:

先拉取远程更改

git pull origin master --allow-unrelated-histories

解决冲突后再推送

git push origin master
问题3:JSON文件编码问题
现象:保存中文记录时出现乱码
解决:
指定utf-8编码
with open(self.records_file, 'w', encoding='utf-8') as f:
json.dump(self.high_scores, f, indent=2, ensure_ascii=False)
其他(感悟、思考等)
初步学习和掌握了python的语法,同时也让我意识到了AI在代码编写领域的巨大潜力,使我明白自己距离掌握python这个编程语言还有很长的路要走。在将代码托管至Gitee平台时,不能轻松成功。

posted @ 2026-05-12 13:06  小天冰星  阅读(4)  评论(0)    收藏  举报