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

 

posted @ 2020-05-11 16:22  kelin1  阅读(132)  评论(0编辑  收藏  举报