day09
1.练习名片管理系统-文件版,无参考答案,参考课件
2.定义一个类,智能手机类,要求有打电话功能,短信功能,拍照功能,定义后,创建一个实例对象,在创建实例后,添加颜色、尺寸等属性。
class SmartPhone(object): def call(self): print("给强哥打call") def send_message(self): print("给甜女神发消息") def take_photo(self): print("来个美美哒自拍") iphone = SmartPhone() iphone.call() iphone.send_message() iphone.take_photo() iphone.color = "red" iphone.size = 5.5 print(iphone.color) print(iphone.size)
3.扩展题:定义一个英雄类,有移动、攻击功能,有血量、攻击力属性,打印对象时候显示英雄实例的攻击力和血量,攻击方法传入敌方英雄(传入参数为字符串即可),对其进行攻击(打印字符串即可)
class Hero(object): # 初始化方法,实例化新对象的时候为其添加属性 def __init__(self, name, hp, power): self.name = name self.hp = hp self.power = power # 打印对象时会打印此魔法方法返回的字符串 def __str__(self): return "%s的攻击力%s,当前血量是%d" % (self.name, self.power, self.hp) def move(self): print("%s正在游走" % self.name) # 传入参数,拼接到方法体中的字符串 def attack(self, enemy): print("%s正在对%s进行一顿胖揍" % (self.name, enemy)) wk = Hero("孙悟空", 100, 400) print(wk) wk.move() wk.attack("鲁班")
4.扩展题:在上一题的基础上,新建两个对象,并修改攻击方法,让两个英雄互相伤害,攻击方法传入另一个英雄,对其造成当前攻击力等值伤害(即让敌方英雄血量减少),并打印出其状态
class Hero(object): def __init__(self, name, hp, power): self.name = name self.hp = hp self.power = power def __str__(self): return "%s的攻击力%s,当前血量是%d" % (self.name, self.power, self.hp) def move(self): print("%s正在游走" % self.name) # 攻击敌方英雄,对其造成伤害 def attack(self, enemy): print("%s正在对%s进行一顿胖揍" % (self.name, enemy.name)) # 攻击,降低敌方的血量,即造成伤害 enemy.hp -= self.power # 创建英雄对象 wk = Hero("孙悟空", 4000, 300) lb = Hero("鲁班", 2500, 500) # 分别打印两个英雄 print(wk) print(lb) # 调用两个英雄的移动方法 wk.move() lb.move() # 孙悟空攻击鲁班 wk.attack(lb) # 观察鲁班当前的状态 print(lb) # 鲁班反击孙悟空 lb.attack(wk) # 观察孙悟空的状态 print(wk)
补充
1.readlines()方法
readlines()方法可传参,传入参数如果是小于第一行长度,将不会读取第二行,大于等于第一行内容长度才会继续向下读取,返回的结果是一个列表,包含读取的内容 file = "test.txt" f_w = open(file, "w") for i in range(10): for j in range(i + 1): f_w.write(str(i)) f_w.write('\n') f_w.close() f_r = open(file, "r") # 打印每一行长度,readlines()不传参默认为-1,读取所有行,传入参数0也是读取所有行 # for i in f_r.readlines(): # print(len(i)) # 以下代码等同于for i in f_r.readlines() # for i in f_r: # print(i, end="") # 第一行长度为2,第2行长度为3... # print(f_r.readlines(1)) # 返回的列表只包含第一行内容 print(f_r.readlines(2)) # 此时参数为2,大于等于(此时等于)第一行的长度,返回的列表包含第一行和第二行内容,此时注意注释前一行,读取时候注意光标位置 f_r.close()