python笔记(四)--封装

内置函数及切片

 字符串:“0”<“A”<“a”

# 最大值,最小值以及比较
a = [1, 2, 3]
# del a[1]
# # # print(a)
# del a[1]
# print(a)
print(max(a))
print(min(a))
print(len(a))
# 如果是字典比较的话,只针对key比较
t = {"a": "z", "b": "x", "c": "y"}
print(max(t))

# 字典不支持切片,字典没有索引,是通过键值对存在的
print([0, 1, 2, 3, 4][1:3])
print((0, 1, 2, 3, 4)[1:3])

 in 在对字典操作时,判断的是字典的键,

in和 not in 被称为成员运算符

# 运算符
# 列表合并,重复,判断存在
print([1, 2] + [3, 4])
print(["hello"] * 3)
print(4 in [1, 2, 3])
print("----------------")

# 字符串合并,重复,判断存在
print("hello " + "python")
print("hello " * 3)
print("hello" in "hello python")

print("----------------")
# 元组合并,重复,判断存在
print((2, 3, 4) + (5, 6))
print(("python " * 3))
print(3 in (3, 4, 5))

结果:
[1, 2, 3, 4]
['hello', 'hello', 'hello']
False
----------------
----------------
hello python
hello hello hello 
True
----------------
(2, 3, 4, 5, 6)
python python python 
True
# extend方法和加号合并看起来一样,
# 但是加号是产生一个新的列表,extend方法是在原有列表上面添加
list = [1, 2]
list.extend([3, 4])
print(list)
#append方法
list1 = [3,4]
list1.append(0)
print(list1)
list1.append([6,7])
print(list1)

结果不同:
[1, 2, 3, 4]
[3, 4, 0]
[3, 4, 0, [6, 7]]

完整的for循环语法

for num in [1, 2, 3]:
    print(num)
    if num == 2:
        break
else:
    # 如果循环体内部使用了break退出了循环,
    # else下方代码就不会被执行
    print("执行")
print("结束")

结果:
1
2
结束

for   aa   in      xx: -----else:

应用场景,只有在迭代遍历嵌套的数据类型时或者需要判断某一字典中是否存在特定的值,

如果存在,提示并退出循环,

不存在,循环体结束后,得到统一的提示

# 判断某一字典中是否存在指定的值,存在
students = [
    {"name": "小红"},
    {"name": "小明"}
]
find_name = "小hua"
for stu in students:
    print(stu)
    # 如果找到就退出循环,不再遍历
    if stu["name"] == find_name:
        print("找到了%s" % find_name)
        break
# 没找到就使用else
# 本题中如果在if下面加else,每次都会输出没找到,
# 但是在for下面加else,在循环搜索输出列表后才输出没找到
else:
    print("抱歉哦,没找到%s" % find_name)
print("循环结束")

结果:
{'name': '小红'}
{'name': '小明'}
抱歉哦,没找到小hua
循环结束

python封装例子:摆放家具

需求

1.房子(House)有户型、总面积和家具名称列表,新房子没有任何的家具

2.家具(Houseltem) 有名字和占地面积,其中
席梦思(bed)占地4平米
衣柜(chest)占地2平米
餐桌(table)占地1.5平米

3.将以上三件家具添加到房子中

4.打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表
 

# 摆放家具
class HouseItem:
    def __init__(self, name, area):
        self.name = name
        self.area = area

    def __str__(self):
        return "[%s] 占地 %.2f" % (self.name, self.area)


class House:

    def __init__(self, house_type, area):
        self.area = area
        self.house_type = house_type

        # 剩余面积
        self.free_area = area
        # 家具名称列表
        self.item_list = []

    def add_item(self, item):
        print("将%s添加到房子中" % item)

        # 家具面积
        if item.area > self.free_area:
            print("%s面积太大,不能添加" % item)
            return

            # 将家具添加到列表中
        self.item_list.append(item.name)
        self.free_area -= item.area

    def __str__(self):
        return "户型: %s\n总面积:%.2f[剩余:%.2f]" \
               "\n家具名称列表:%s" % (self.house_type,
                                self.area, self.free_area, self.item_list)


# 创建家具
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)
print(bed)
print(chest)
print(table)

# 创建房子对象
my_house = House("两室一厅", 60)

my_house.add_item(bed)
my_house.add_item(chest)
my_house.add_item(table)
print(my_house)

python封装例子:土兵突击

需求

1.士兵许三多有一把AK47

2.士兵可以开火
3.枪能够发射子弹
4.枪装填装填子弹--增加子弹数量

# 一个对象的属性可以是另外一个类创建的对象
class Gun:
    def __init__(self, model):
        # 枪的型号
        self.model = model
        # 子弹数量
        self.bullet_count = 0

    def add_bullet(self, count):
        self.bullet_count += count

    def __str__(self):
        return "这次拿的枪是[%s]" % self.model

    def shoot(self):
        # 判断子弹数量
        if self.bullet_count <= 0:
            print("[%s]没有子弹了" % self.model)
            return

            # 2发射子弹,-1
        self.bullet_count -= 1

        # 3 提示发射信息
        print("[%s]突突突----[%d]" % (self.model, self.bullet_count))


class Soldier:
    def __init__(self, name):
        self.name = name
        self.gun = None

    def __str__(self):
        return

    def fire(self):
        # 判断士兵有枪
        if self.gun is None:
            print("[%s]没有枪,无法上战场" % self.name)
            return
        print("拿着冲啊")

        # 让枪装填子弹
        self.gun.add_bullet(50)

        # 发射子弹
        self.gun.shoot()


ak47 = Gun("AK47")
# ak47.add_bullet(50)
# ak47.shoot()

xusanduo = Soldier("许三多")
xusanduo.gun = ak47
xusanduo.fire()
print(xusanduo.gun)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值