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格式)
- 实验过程及结果
Pycharm作为开发环境


猜数字游戏代码:
`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()表现  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平台时,不能轻松成功。
浙公网安备 33010602011771号