【Python 】小练习 4(这些简单的题目你都会吗)

一、学生管理系统

题目:设计一个学生管理系统,包括学生信息的录入、查询和删除功能。

定义了两个类:Student 和 StudentManager。
Student 类:用于创建学生对象,包含学生的基本信息如学号、姓名、年龄和性别。StudentManager 类:用于管理学生信息,包括添加、删除、查找和列出所有学生的功能。
在脚本的最后部分,通过实例化 StudentManager 并操作几个 Student 对象来演示如何使用这些类。

代码:

# 定义 Student 类,表示单个学生的信息
class Student:
    def __init__(self, student_id, name, age, gender):
        self.student_id = student_id  # 学号
        self.name = name              # 姓名
        self.age = age                # 年龄
        self.gender = gender          # 性别

    def __str__(self):
        return f"学号: {self.student_id}, 姓名: {self.name}, 年龄: {self.age}, 性别: {self.gender}"


# 定义 StudentManager 类,用于管理学生列表
class StudentManager:
    def __init__(self):
        self.students = []  # 存储学生对象的列表

    def add_student(self, student):
        """添加学生"""
        for s in self.students:
            if s.student_id == student.student_id:
                print("错误:学号已存在!")
                return
        self.students.append(student)
        print(f"学生 {student.name} 添加成功。")

    def remove_student(self, student_id):
        """根据学号删除学生"""
        for student in self.students:
            if student.student_id == student_id:
                self.students.remove(student)
                print(f"学号 {student_id} 的学生已删除。")
                return
        print(f"未找到学号为 {student_id} 的学生。")

    def find_student(self, student_id):
        """根据学号查找学生"""
        for student in self.students:
            if student.student_id == student_id:
                return student
        return None

    def list_all_students(self):
        """列出所有学生"""
        if not self.students:
            print("没有学生记录。")
        else:
            for student in self.students:
                print(student)


# 示例演示部分
if __name__ == "__main__":
    manager = StudentManager()
    # 创建几个学生对象
    stu1 = Student("001", "张三", 20, "男")
    stu2 = Student("002", "李四", 22, "女")
    stu3 = Student("003", "王五", 21, "男")
    # 添加学生
    manager.add_student(stu1)
    manager.add_student(stu2)
    manager.add_student(stu3)

    print("\n所有学生信息:")
    manager.list_all_students()

    print("\n查找学号为 002 的学生:")
    found = manager.find_student("002")
    if found:
        print(found)
    else:
        print("未找到该学生。")

    print("\n删除学号为 002 的学生:")
    manager.remove_student("002")

    print("\n删除后所有学生信息:")
    manager.list_all_students()

解析:

运行结果:

二、汽车类设计:包含属性与多方法功能的 Car 类实现

题目:

设计一个名为 Car 的类,该类具有以下特性和方法:
属性:

make: 汽车的品牌(字符串)

model: 汽车的型号(字符串)

year: 汽车的生产年份(整数)

color: 汽车的颜色(字符串)

方法:

__init__(self, make, model, year, color): 初始化上述属性。

display_info(self): 打印汽车的详细信息。

is_vintage(self): 如果汽车的生产年份超过30年则返回True,否则返回False。

resell_value(self, years): 计算并返回汽车经过指定年数后的转售价值。假设每年汽车的价值下降10%。
 

代码:

class Car:
    def __init__(self, make: str, model: str, year: int, color: str):
        self.make = make
        self.model = model
        self.year = year
        self.color = color
    def display_info(self):
        """打印汽车的详细信息"""
        print(f"品牌: {self.make}")
        print(f"型号: {self.model}")
        print(f"年份: {self.year}")
        print(f"颜色: {self.color}")

    def is_vintage(self) -> bool:
        """如果汽车的生产年份超过30年则返回True,否则返回False"""
        current_year = 2025  # 假设当前年份为2025年
        return current_year - self.year > 30

    def resell_value(self, years: int) -> float:
        """
        计算并返回汽车经过指定年数后的转售价值。
        每年下降10%,即保留90%的价值。
        初始价值假设为10000元。
        """
        initial_value = 10000  # 初始价值为10000元
        depreciation_rate = 0.90  # 每年折旧率
        final_value = initial_value * (depreciation_rate ** years)
        return round(final_value, 2)

# 主程序入口
if __name__ == "__main__":
    # 创建一个 Car 实例
    my_car = Car(make="Toyota", model="Corolla", year=2000, color="蓝色")

    # 显示汽车信息
    print("🚗 汽车信息:")
    my_car.display_info()

    # 判断是否为古董车
    vintage_status = "是" if my_car.is_vintage() else "不是"
    print(f"📦 是否是古董车: {vintage_status}")

    # 计算10年后的转售价值
    resale = my_car.resell_value(10)
    print(f"💰 10年后的转售价值: ¥{resale}")

解析:

运行结果:

三、银行账户管理系统

题目:设计一个银行账户管理系统,其中包括账户类(Account)和客户类(Customer)。
账户类:需要有存款(deposit)、取款(withdraw)和查询余额(get_balance)的功能。
客户类:需要有添加账户(add_account)和删除账户(remove_account)的功能。

要求:
账户类:应该包含属性:账号(account_number),姓名(name),余额(balance)。
客户类:应该包含属性:姓名(name),以及一个存储该客户所有账户的列表(accounts)。
实现功能时,确保对账户余额进行合理的检查,避免透支情况发生。
编写测试代码以验证系统的功能。

代码:

class Account:
    def __init__(self, account_number: str, name: str, balance: float = 0.0):
        self.account_number = account_number
        self.name = name
        self.balance = balance

    def deposit(self, amount: float):
        """存款"""
        if amount <= 0:
            print("存款金额必须大于0。")
            return
        self.balance += amount
        print(f"✅ 存款成功,当前余额为:¥{self.balance:.2f}")

    def withdraw(self, amount: float):
        """取款"""
        if amount <= 0:
            print("取款金额必须大于0。")
            return
        if amount > self.balance:
            print("❌ 余额不足,无法取款。")
            return
        self.balance -= amount
        print(f"✅ 取款成功,当前余额为:¥{self.balance:.2f}")

    def get_balance(self):
        """查询余额"""
        print(f"💰 当前账户余额为:¥{self.balance:.2f}")
        return self.balance

class Customer:
    def __init__(self, name: str):
        self.name = name
        self.accounts = []  # 存储该客户的所有账户

    def add_account(self, account: Account):
        """添加账户"""
        for acc in self.accounts:
            if acc.account_number == account.account_number:
                print("❌ 已存在相同账号,添加失败。")
                return
        self.accounts.append(account)
        print(f"✅ 账户 {account.account_number} 添加成功。")

    def remove_account(self, account_number: str):
        """根据账号删除账户"""
        for account in self.accounts:
            if account.account_number == account_number:
                self.accounts.remove(account)
                print(f"✅ 账户 {account_number} 删除成功。")
                return
        print("❌ 没有找到指定账户。")

    def list_accounts(self):
        """列出所有账户信息"""
        if not self.accounts:
            print("🚫 无账户信息。")
            return
        print(f"\n📄 {self.name} 的账户列表:")
        for account in self.accounts:
            print(f"账号: {account.account_number}, 名称: {account.name}, 余额: ¥{account.balance:.2f}")

if __name__ == "__main__":
    # 创建一个客户
    customer = Customer("张三")

    # 创建几个账户
    acc1 = Account("1001", "张三储蓄账户", 5000.0)
    acc2 = Account("1002", "张三信用卡", 2000.0)
    acc3 = Account("1001", "重复账号测试")  # 尝试添加重复账号

    # 添加账户
    customer.add_account(acc1)
    customer.add_account(acc2)
    customer.add_account(acc3)  # 应提示账号重复

    # 列出所有账户
    customer.list_accounts()

    # 测试存款与取款
    print("\n🧪 测试账户操作:")
    acc1.deposit(1000)   # 存入1000元
    acc1.withdraw(2000)  # 正常取款
    acc1.withdraw(4000)  # 试图超额取款

    # 查询余额
    acc1.get_balance()

    # 删除账户
    customer.remove_account("1002")
    customer.remove_account("9999")  # 删除不存在的账户

    # 再次列出账户
    customer.list_accounts()

解析:

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值