Python编程基础训练(测试代码)¶
( 使用Jupyter Notebook,供经济统计学专业2025级同学使用)
第一部分:条件结构(20分钟)¶
1.1 基础条件判断¶
# 练习1:成绩等级判断
score = 85
# 请根据以下规则判断等级:
# 90-100: A, 80-89: B, 70-79: C, 60-69: D, 0-59: E
grade = ""
# 你的代码写在这里
print(f"分数: {score}, 等级: {grade}")
1.2 多条件判断¶
# 练习2:闰年判断
year = 2024
# 闰年规则:能被4整除但不能被100整除,或者能被400整除
is_leap_year = False
# 你的代码写在这里
print(f"{year}年{'是' if is_leap_year else '不是'}闰年")
1.3 嵌套条件¶
# 练习3:根据年龄和性别判断票价
age = 25
gender = "male"
# 规则:
# 儿童(0-12岁): 免费
# 青少年(13-17岁): 半价
# 成人(18-64岁): 女性9折,男性全价
# 老人(65岁以上): 7折
ticket_price = 100
discount = 1.0
# 你的代码写在这里
final_price = ticket_price * discount
print(f"原价: {ticket_price}元, 折扣: {discount:.1%}, 最终价格: {final_price}元")
第二部分:循环结构(30分钟)¶
2.1 for循环基础¶
2.2 for循环进阶¶
# 练习2:打印乘法表
# 打印9x9乘法表
# 你的代码写在这里
# 练习3:列表操作
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 1. 筛选出偶数
even_numbers = []
# 2. 计算每个数的平方
squares = []
# 你的代码写在这里
print(f"偶数: {even_numbers}")
print(f"平方: {squares}")
2.3 while循环¶
# 练习4:猜数字游戏
import random
target_number = random.randint(1, 100)
attempts = 0
max_attempts = 7
guessed = False
print("猜数字游戏开始!数字在1-100之间,你有7次机会")
# 你的代码写在这里
# 使用while循环让用户猜数字
# 每次猜测后提示"太大了"、"太小了"或"猜对了!"
if guessed:
print(f"恭喜!你在{attempts}次内猜对了!")
else:
print(f"很遗憾,游戏结束。正确答案是{target_number}")
2.4 循环控制¶
# 练习5:寻找质数
# 找出1-100中的所有质数
prime_numbers = []
# 你的代码写在这里
# 提示:使用嵌套循环
# 内层循环判断一个数是否是质数
# 外层循环遍历1-100
print(f"1-100中的质数有: {prime_numbers}")
print(f"共有{len(prime_numbers)}个质数")
第三部分:函数基础(20分钟)¶
3.1 简单函数定义¶
# 练习1:创建欢迎函数
def greet(name, time_of_day="上午"):
"""返回欢迎信息"""
# 你的代码写在这里
pass
# 测试函数
print(greet("张三"))
print(greet("李四", "下午"))
3.2 带参数的函数¶
# 练习2:计算器函数
def calculator(a, b, operation="add"):
"""四则运算计算器"""
# 你的代码写在这里
# 支持的操作: "add" (加), "subtract" (减), "multiply" (乘), "divide" (除)
pass
# 测试函数
print(f"5 + 3 = {calculator(5, 3, 'add')}")
print(f"5 - 3 = {calculator(5, 3, 'subtract')}")
print(f"5 * 3 = {calculator(5, 3, 'multiply')}")
print(f"6 / 2 = {calculator(6, 2, 'divide')}")
3.3 函数返回多个值¶
# 练习3:统计函数
def analyze_numbers(numbers):
"""分析数字列表,返回统计信息"""
# 你的代码写在这里
# 返回: 总和, 平均值, 最大值, 最小值
pass
# 测试函数
data = [23, 45, 12, 67, 89, 34, 56, 78]
result = analyze_numbers(data)
print(f"数据: {data}")
print(f"统计结果: 总和={result[0]}, 平均值={result[1]:.2f}, 最大值={result[2]}, 最小值={result[3]}")
3.4 默认参数和关键字参数¶
# 练习4:格式化输出函数
def format_student_info(name, age, major="计算机科学", grade=1, **kwargs):
"""格式化学生信息,支持任意额外信息"""
# 你的代码写在这里
# 返回格式化的字符串,包含所有信息
pass
# 测试函数
info1 = format_student_info("王五", 20)
info2 = format_student_info("赵六", 21, "数据科学", 2, hobby="篮球", email="zhaoliu@example.com")
print(info1)
print(info2)
第四部分:类与对象(40分钟)¶
4.1 类的定义和实例化¶
# 练习1:定义学生类
class Student:
def __init__(self, name, student_id, age):
"""初始化学生对象"""
# 你的代码写在这里
# 设置name, student_id, age属性
# 添加一个courses属性,初始化为空列表
pass
def display_info(self):
"""显示学生信息"""
# 你的代码写在这里
pass
# 创建学生对象
student1 = Student("张三", "2023001", 20)
student1.display_info()
4.2 类属性和实例属性¶
# 练习2:银行账户类
class BankAccount:
# 类属性:所有账户共享
bank_name = "数字银行"
interest_rate = 0.03 # 年利率3%
def __init__(self, account_holder, account_number, initial_balance=0):
"""初始化银行账户"""
# 实例属性:每个账户独有
# 你的代码写在这里
pass
def deposit(self, amount):
"""存款"""
# 你的代码写在这里
pass
def withdraw(self, amount):
"""取款"""
# 你的代码写在这里
pass
def get_balance(self):
"""获取余额"""
# 你的代码写在这里
pass
def add_interest(self):
"""添加年利息"""
# 你的代码写在这里
pass
# 测试银行账户
account1 = BankAccount("张三", "001", 1000)
account1.deposit(500)
account1.withdraw(200)
account1.add_interest()
print(f"余额: {account1.get_balance()}元")
print(f"银行名称: {BankAccount.bank_name}")
4.3 类方法¶
# 练习3:购物车类
class ShoppingCart:
def __init__(self, customer_name):
"""初始化购物车"""
self.customer = customer_name
self.items = [] # 每个元素是(商品名称, 价格, 数量)的元组
def add_item(self, item_name, price, quantity=1):
"""添加商品到购物车"""
# 你的代码写在这里
pass
def remove_item(self, item_name):
"""从购物车移除商品"""
# 你的代码写在这里
pass
def calculate_total(self):
"""计算总价"""
# 你的代码写在这里
pass
def display_cart(self):
"""显示购物车内容"""
# 你的代码写在这里
pass
# 测试购物车
cart = ShoppingCart("李四")
cart.add_item("苹果", 5.5, 3)
cart.add_item("香蕉", 3.2, 2)
cart.add_item("牛奶", 8.0, 1)
cart.display_cart()
print(f"总计: {cart.calculate_total()}元")
4.4 综合练习:图书馆系统¶
# 练习4:图书馆管理系统
class Book:
def __init__(self, title, author, isbn, publication_year):
"""初始化书籍"""
# 你的代码写在这里
pass
def display_info(self):
"""显示书籍信息"""
# 你的代码写在这里
pass
class Library:
def __init__(self, name):
"""初始化图书馆"""
self.name = name
self.books = {} # 键: ISBN, 值: Book对象
self.borrowed_books = {} # 键: ISBN, 值: 借阅人姓名
def add_book(self, book):
"""添加书籍到图书馆"""
# 你的代码写在这里
pass
def borrow_book(self, isbn, borrower):
"""借出书籍"""
# 你的代码写在这里
pass
def return_book(self, isbn):
"""归还书籍"""
# 你的代码写在这里
pass
def search_book(self, keyword):
"""搜索书籍(按书名或作者)"""
# 你的代码写在这里
pass
def display_books(self):
"""显示所有书籍"""
# 你的代码写在这里
pass
# 测试图书馆系统
library = Library("校园图书馆")
# 添加书籍
book1 = Book("Python编程", "张三", "978-7-111-12345-6", 2023)
book2 = Book("数据科学入门", "李四", "978-7-111-12346-7", 2022)
library.add_book(book1)
library.add_book(book2)
# 显示所有书籍
library.display_books()
# 搜索书籍
results = library.search_book("Python")
print("\n搜索结果:")
for book in results:
book.display_info()
4.5 进阶练习:计算器类¶
# 练习5:计算器类
class Calculator:
def __init__(self):
"""初始化计算器,历史记录为空"""
self.history = []
def add(self, a, b):
"""加法"""
result = a + b
self.history.append(f"{a} + {b} = {result}")
return result
def subtract(self, a, b):
"""减法"""
# 你的代码写在这里
pass
def multiply(self, a, b):
"""乘法"""
# 你的代码写在这里
pass
def divide(self, a, b):
"""除法"""
# 你的代码写在这里
pass
def power(self, a, b):
"""幂运算"""
# 你的代码写在这里
pass
def get_history(self):
"""获取计算历史"""
return self.history
def clear_history(self):
"""清除计算历史"""
self.history = []
def calculate_expression(self, expression):
"""计算表达式,支持 +, -, *, /, ^"""
# 挑战题:实现一个简单的表达式计算器
# 例如:"3 + 4 * 2" 应该返回 11
# 提示:可以使用eval()函数,但要注意安全性
pass
# 测试计算器
calc = Calculator()
print(f"3 + 5 = {calc.add(3, 5)}")
print(f"10 - 4 = {calc.subtract(10, 4)}")
print(f"2 ^ 3 = {calc.power(2, 3)}")
print("\n计算历史:")
for record in calc.get_history():
print(record)
第五部分:综合应用(10分钟)¶
综合练习:简易学生管理系统¶
# 综合练习:学生成绩管理系统
class Student:
def __init__(self, name, student_id):
# 你的代码写在这里
pass
def add_grade(self, course, score):
# 你的代码写在这里
pass
def get_average(self):
# 你的代码写在这里
pass
def display_info(self):
# 你的代码写在这里
pass
class Course:
def __init__(self, course_name, course_code):
# 你的代码写在这里
pass
def add_student(self, student):
# 你的代码写在这里
pass
def get_course_average(self):
# 你的代码写在这里
pass
# 主程序
def main():
# 创建学生
student1 = Student("张三", "2023001")
student2 = Student("李四", "2023002")
# 添加成绩
student1.add_grade("数学", 90)
student1.add_grade("英语", 85)
student2.add_grade("数学", 88)
student2.add_grade("英语", 92)
# 显示信息
student1.display_info()
student2.display_info()
# 创建课程
math_course = Course("高等数学", "MATH101")
math_course.add_student(student1)
math_course.add_student(student2)
print(f"\n数学课程平均分: {math_course.get_course_average()}")
# 运行主程序
if __name__ == "__main__":
main()
练习答案参考¶
注意:以下为参考答案,请在尝试自己完成后再查看。
第一部分:条件结构答案
# 1.1 成绩等级判断
score = 85
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
elif score >= 60:
grade = "D"
else:
grade = "E"
print(f"分数: {score}, 等级: {grade}")
# 1.2 闰年判断
year = 2024
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
is_leap_year = True
else:
is_leap_year = False
print(f"{year}年{'是' if is_leap_year else '不是'}闰年")
# 1.3 票价判断
age = 25
gender = "male"
ticket_price = 100
discount = 1.0
if age <= 12:
discount = 0.0
elif age <= 17:
discount = 0.5
elif age <= 64:
if gender == "female":
discount = 0.9
else:
discount = 1.0
else:
discount = 0.7
final_price = ticket_price * discount
print(f"原价: {ticket_price}元, 折扣: {discount:.0%}, 最终价格: {final_price}元")
第二部分:循环结构答案
# 2.1 计算1-100的和
total = 0
for i in range(1, 101):
total += i
print(f"1到100的和是: {total}")
# 2.2 打印乘法表
for i in range(1, 10):
for j in range(1, i+1):
print(f"{j}×{i}={i*j:2d}", end=" ")
print()
# 2.2 列表操作
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = []
squares = []
for num in numbers:
if num % 2 == 0:
even_numbers.append(num)
squares.append(num ** 2)
print(f"偶数: {even_numbers}")
print(f"平方: {squares}")
# 2.3 猜数字游戏
import random
target_number = random.randint(1, 100)
attempts = 0
max_attempts = 7
guessed = False
print("猜数字游戏开始!数字在1-100之间,你有7次机会")
while attempts < max_attempts and not guessed:
attempts += 1
try:
guess = int(input(f"第{attempts}次猜测: "))
if guess < target_number:
print("太小了!")
elif guess > target_number:
print("太大了!")
else:
guessed = True
print("猜对了!")
except ValueError:
print("请输入有效的数字!")
attempts -= 1
if guessed:
print(f"恭喜!你在{attempts}次内猜对了!")
else:
print(f"很遗憾,游戏结束。正确答案是{target_number}")
# 2.5 寻找质数
prime_numbers = []
for num in range(2, 101):
is_prime = True
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
prime_numbers.append(num)
print(f"1-100中的质数有: {prime_numbers}")
print(f"共有{len(prime_numbers)}个质数")
课程总结与思考题¶
课程总结¶
今天学习了: 1. 条件结构:if-elif-else语句 2. 循环结构:for循环和while循环 3. 函数定义:参数、返回值、作用域 4. 类与对象:类定义、属性、方法、实例化
思考题¶
- 什么时候使用for循环,什么时候使用while循环?
- 函数参数有哪几种类型?它们有什么区别?
- 类属性和实例属性有什么区别?
- 如何在类方法中访问实例属性?
扩展练习(课后完成)¶
- 改进猜数字游戏,添加难度选择功能
- 创建一个简单的计算器程序,支持连续计算
- 设计一个简单的通讯录管理系统,包含添加、删除、查找联系人功能
时间安排建议: - 0-20分钟:条件结构练习 - 20-50分钟:循环结构练习 - 50-70分钟:函数基础练习 - 70-110分钟:类与对象练习 - 110-120分钟:综合应用和总结
课堂提示: 1. 每个练习完成后,可以运行代码查看结果 2. 遇到错误时,仔细阅读错误信息,尝试自己解决 3. 可以使用print()语句调试,查看变量值 4. 对于复杂的代码,可以先写注释,再填充代码