【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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曦樂~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值