第1关:实验五 面向对象编程基础
第1关:实验五 面向对象编程基础
任务描述
本关任务:编写账户类。为账户类编写初始化方法; 为账户类添加show()方法。
相关知识
为了完成本关任务,你需要掌握:1.面向对象编程基础。
编程要求
根据提示,在右侧编辑器补充代码。 不修改if name=='main': 以下代码。
测试说明
平台会对你编写的代码进行测试:
测试输入:10000
,123456
,3000
预期输出: 账号:10000
密码:123456
余额:3000
class Account:
def __init__(self,account_id,pwd,balance):
self.account_id = account_id
self.pwd = pwd
self.balance = balance
def show(self):
print(f"账号:{self.account_id}\n密码:{self.pwd}\n余额:{self.balance}")
if __name__ == '__main__':
s = input()
token = s.split(',')
account_id = token[0]
pwd = token[1]
balance = int(token[2])
aAccount = Account(account_id,pwd,balance)
aAccount.show()
第2关:实验五 面向对象编程基础 矩形类
任务描述
本关任务:编写矩形类。1 为矩形类添加初始化方法; 2 为矩形类添加move()方法,move()方法的功能是将矩形移动到新的位置;3为矩形类添加scale()方法,scale()方法的功能是放大或缩小矩形的长宽。
相关知识
为了完成本关任务,你需要掌握:1.声明类。
编程要求
根据提示,在右侧编辑器补充代码,注意空格和缩进。 不修改if name == 'main': 该行以下的程序。
测试说明
平台会对你编写的代码进行测试:
测试输入:40
,50
,60
,70
预期输出: 位置:(40,50)
长宽分别为:60 70
移动后位置为:(50,70)
放大两倍后长宽分别为:(120,140)
class Rectangle:
def __init__(self,x,y,w,h):
self.x = x
self.y = y
self.w = w
self.h = h
def move(self,x,y):
self.x = x
self.y = y
def scale(self,rate):
self.w *= rate
self.h *= rate
if __name__ =='__main__':
pass
s =input()
token = s.split(',')
x,y=int(token[0]),int(token[1])
w,h=int(token[2]),int(token[3])
aRectangle = Rectangle(x,y,w,h)
print("位置:({},{})".format(aRectangle.x,aRectangle.y))
print("长宽分别为:{} {}".format(aRectangle.w,aRectangle.h))
aRectangle.move(50,70)
print("移动后位置为:({},{})".format(aRectangle.x,aRectangle.y))
aRectangle.scale(2)
print("放大两倍后长宽分别为:({},{})".format(aRectangle.w,aRectangle.h))
第3关:实验五 面向对象编程基础 通讯录类
任务描述
本关任务:编写联系人类和通讯录类。 为联系人类添加初始化方法;
为通讯录类添加add()方法,其功能是向通讯录中添加联系人; 为通讯录添加edit()方法,其功能是修改name的电话号码phone; 为通讯录类添加find()方法,其功能是根据姓名查找电话号码; 为通讯录添加size()方法,其功能是返回通讯录中联系人的条数;
相关知识
为了完成本关任务,你需要掌握:1.面向对象编程基础。
编程要求
根据提示,在右侧编辑器补充代码,注意空格和缩进。 不修改if name == 'main': 该行以下代码。
测试说明
平台会对你编写的代码进行测试:
测试输入:jerry
,18912345678
,mary
,13998765432
,peter
,13012344321
; 预期输出: jerry,18912345678
mary,13998765432
peter,13012344321
mary的电话号码为13698765432
peter的电话号码为13012344321
通讯录中总共有3条联系人信息
通讯录中姓名以m字符开始的联系人有1条
class Contact:
def __init__(self,name,phone):
self.name = name
self.phone = phone
class Phonebook:
def __init__(self):
self.data = []
def add(self,person):
self.data.append(person)
def display(self):
for i in self.data:
print(f"{i.name},{i.phone}")
def find(self,name):
for i in self.data:
if i.name == name:
return i.phone
return "NoResult" #保持返回值类型的统一
def edit(self,name,phone):
for i in self.data:
if i.name == name:
i.phone = phone
def size(self):
return len(self.data)
def stat(self):
count = 0
for i in self.data:
if i.name[0] == 'm':
count += 1
return count
if __name__=='__main__':
#pass
s = input()
token = s.split(',')
aContact = Contact(token[0],token[1])
bContact = Contact(token[2],token[3])
cContact = Contact(token[4],token[5])
aPhonebook = Phonebook()
aPhonebook.add(aContact)
aPhonebook.add(bContact)
aPhonebook.add(cContact)
aPhonebook.display()
#bContact.edit('13698765432')
name = 'mary'
phone = "13698765432"
aPhonebook.edit(name,phone)
print("{}的电话号码为{}".format(name,aPhonebook.find(name)))
name = 'peter'
print("{}的电话号码为{}".format(name,aPhonebook.find(name)))
print("通讯录中总共有{}条联系人信息".format(aPhonebook.size()))
print("通讯录中姓名以m字符开始的联系人有{}条".format(aPhonebook.stat()))