Skip to content

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循环基础

# 练习1:计算1-100的和
total = 0
# 使用for循环计算1到100的和
# 你的代码写在这里


print(f"1到100的和是: {total}")

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. 类与对象:类定义、属性、方法、实例化

思考题

  1. 什么时候使用for循环,什么时候使用while循环?
  2. 函数参数有哪几种类型?它们有什么区别?
  3. 类属性和实例属性有什么区别?
  4. 如何在类方法中访问实例属性?

扩展练习(课后完成)

  1. 改进猜数字游戏,添加难度选择功能
  2. 创建一个简单的计算器程序,支持连续计算
  3. 设计一个简单的通讯录管理系统,包含添加、删除、查找联系人功能

时间安排建议: - 0-20分钟:条件结构练习 - 20-50分钟:循环结构练习 - 50-70分钟:函数基础练习 - 70-110分钟:类与对象练习 - 110-120分钟:综合应用和总结

课堂提示: 1. 每个练习完成后,可以运行代码查看结果 2. 遇到错误时,仔细阅读错误信息,尝试自己解决 3. 可以使用print()语句调试,查看变量值 4. 对于复杂的代码,可以先写注释,再填充代码