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()