zoukankan      html  css  js  c++  java
  • 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('
    ')
    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()
  • 相关阅读:
    JAXB和XStream比较
    CButtonST类公共接口函数的介绍
    為什麼我的派生按鈕的自畫ownerdraw功能總是出錯?
    vc里使用GDI+
    cdecl, stdcall, pascal,fastcall 都有什么区别,具体是什么调用约定?
    SDK编程中窗口ID,句柄,指针三者相互转换函数
    __declspec,__cdecl,__stdcall都是什么意思?
    OnDraw()和OnPaint()
    栈 堆 区别
    MSDN for Visual Studio 6.0 高速下载地址
  • 原文地址:https://www.cnblogs.com/kangwenju/p/12869895.html
Copyright © 2011-2022 走看看