【Python】类和对象

1.设计一个 Circle类来表示圆,这个类包含圆的半径以及求面积和周长的函数。再使用这个类创建半径为1~10的圆,并计算出相应的面积和周长。

import math
class Circle:
    def __init__(self, r):
        self.r = r
    #面积
    def area(self):
        return math.pi * (self.r ** 2)
    #周长
    def circumference(self):
        return 2 * math.pi * self.r

#半径1~10
for i in range(1, 11):
    circle = Circle(i)
    area_value = round(circle.area(), 2)
    circumference_value = round(circle.circumference(), 2)
    print(f"半径为{i}的圆,面积:{area_value}周长:{circumference_value}")

2、形参和实参

def fun(x, L=[9]):
    x = 3
    L.append(8)
    print("inside fun, x, L:", x, L)


# 主程序
X = 5
L = [4, 1]
fun(X)  
print("X, L:", X, L)
fun(X, L)
print("X, L:", X, L)

首先fun中只传入了x,没有传入L,所以L用默认值9,x形参在fun函数内变为3,L9后面追加8,得到第一个输出;

由于是值传递,所以x的实参(在主程序中)没有改变,主程序中的L也没有改变,所以第二个输出XL为其初始值;

第二次调用fun传入了x和L,此时L为4,1,x赋值为3,L的4,1,后面追加8,得到第三个输出;

由于L是数组,fun传入它相当于传入了它的首地址,所以它在fun函数的改变影响到它本身(在主程序)中的值,得到第四个输出。

3、设计一个Account类表示账户, 自行设计该类中的属性和方法,  并利用这个类创建一个账号为998866,余额为2000,年利率为4.5%的账户,  然后从该账户中存人150,取出1500。 # 打印出账号、余额、年利率、月利率、月息。

class Account:
    def __init__(self, account_number, balance, annual_interest_rate):
        self.account_number = account_number
        self.balance = balance
        self.annual_interest_rate = annual_interest_rate / 100  # 将百分比转换为小数

    def deposit(self, amount):
        if amount > 0:
            self.balance += amount
            print(f"存款成功,当前余额为:{self.balance}")
        else:
            print("存款金额必须大于0")

    def withdraw(self, amount):
        if amount > 0 and amount <= self.balance:
            self.balance -= amount
            print(f"取款成功,当前余额为:{self.balance}")
        else:
            print("取款金额必须大于0且小于等于当前余额")

    def calculate_monthly_interest_rate(self):
        return self.annual_interest_rate / 12

    def calculate_monthly_interest(self):
        return self.balance * self.calculate_monthly_interest_rate()

    def display_info(self):
        monthly_interest_rate = self.calculate_monthly_interest_rate()
        monthly_interest = self.calculate_monthly_interest()
        print(f"账号:{self.account_number}")
        print(f"余额:{self.balance}")
        print(f"年利率:{self.annual_interest_rate * 100}%")
        print(f"月利率:{monthly_interest_rate * 100}%")
        print(f"月息:{monthly_interest}")

    # 创建账号为998866, 余额为2000, 年利率为4.5%的账户


account = Account(account_number="998866", balance=2000, annual_interest_rate=4.5)

# 从该账户中存入150
account.deposit(150)

# 从该账户中取出1500
account.withdraw(1500)

# 打印出账号、余额、年利率、月利率、月息
account.display_info()

4、设计一个 Timer类,该类包括:表示小时、分、秒的三个数据域,三个数据域各自的get 方法,设置新时间和显示时间的方法。用当前时间创建一个Timer 类并显示出来

class Timer:  
    def __init__(self, hours=0, minutes=0, seconds=0):  
        self.hours = hours  
        self.minutes = minutes  
        self.seconds = seconds  
  
    def get_hours(self):  
        return self.hours  
  
    def get_minutes(self):  
        return self.minutes  
  
    def get_seconds(self):  
        return self.seconds  
  
    def set_time(self, hours, minutes, seconds):  
        self.hours = max(0, min(hours, 23))  
        self.minutes = max(0, min(minutes, 59))  
        self.seconds = max(0, min(seconds, 59))  
  
    def display_time(self):  
        print(f"{self.hours:02d}:{self.minutes:02d}:{self.seconds:02d}")  
  
    # 使用当前时间创建Timer实例的静态方法  
    @staticmethod  
    def from_current_time():  
        from datetime import datetime  
        now = datetime.now()  
        return Timer(now.hour, now.minute, now.second)  
  
# 使用当前时间创建一个Timer类并显示出来  
current_timer = Timer.from_current_time()  
current_timer.display_time()  
  
# 自定义时间并显示出来  
custom_timer = Timer(15, 30, 45)  
custom_timer.display_time()

相关推荐

  1. python对象

    2024-05-11 09:00:03       72 阅读
  2. Python对象

    2024-05-11 09:00:03       40 阅读
  3. python实践笔记(二): 对象

    2024-05-11 09:00:03       26 阅读
  4. Python面向对象编程:入门篇(对象

    2024-05-11 09:00:03       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-11 09:00:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-11 09:00:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-11 09:00:03       82 阅读
  4. Python语言-面向对象

    2024-05-11 09:00:03       91 阅读

热门阅读

  1. IPsec协议:保障网络通信的安全利器

    2024-05-11 09:00:03       32 阅读
  2. [力扣题解]455. 分发饼干

    2024-05-11 09:00:03       27 阅读
  3. 每天一个数据分析题(三百一十七)-AB测试

    2024-05-11 09:00:03       35 阅读
  4. Mysql修改表结构、添加索引会锁表吗?

    2024-05-11 09:00:03       32 阅读
  5. 相机购买指南

    2024-05-11 09:00:03       28 阅读
  6. Scrum敏捷项目管理转型有哪些工具可以使用?

    2024-05-11 09:00:03       32 阅读
  7. ansible快速入门手册

    2024-05-11 09:00:03       29 阅读
  8. 基于UDP的网络客户端和服务端模型IO函数

    2024-05-11 09:00:03       35 阅读
  9. 常用的 Ansible 模块

    2024-05-11 09:00:03       34 阅读
  10. 速盾:如何选择适合自己的网络安全解决方案?

    2024-05-11 09:00:03       30 阅读