• python笔记(四)--封装


    内置函数及切片

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

    1. # 最大值,最小值以及比较
    2. a = [1, 2, 3]
    3. # del a[1]
    4. # # # print(a)
    5. # del a[1]
    6. # print(a)
    7. print(max(a))
    8. print(min(a))
    9. print(len(a))
    10. # 如果是字典比较的话,只针对key比较
    11. t = {"a": "z", "b": "x", "c": "y"}
    12. print(max(t))
    13. # 字典不支持切片,字典没有索引,是通过键值对存在的
    14. print([0, 1, 2, 3, 4][1:3])
    15. print((0, 1, 2, 3, 4)[1:3])

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

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

    1. # 运算符
    2. # 列表合并,重复,判断存在
    3. print([1, 2] + [3, 4])
    4. print(["hello"] * 3)
    5. print(4 in [1, 2, 3])
    6. print("----------------")
    7. # 字符串合并,重复,判断存在
    8. print("hello " + "python")
    9. print("hello " * 3)
    10. print("hello" in "hello python")
    11. print("----------------")
    12. # 元组合并,重复,判断存在
    13. print((2, 3, 4) + (5, 6))
    14. print(("python " * 3))
    15. print(3 in (3, 4, 5))
    16. 结果:
    17. [1, 2, 3, 4]
    18. ['hello', 'hello', 'hello']
    19. False
    20. ----------------
    21. ----------------
    22. hello python
    23. hello hello hello
    24. True
    25. ----------------
    26. (2, 3, 4, 5, 6)
    27. python python python
    28. True
    1. # extend方法和加号合并看起来一样,
    2. # 但是加号是产生一个新的列表,extend方法是在原有列表上面添加
    3. list = [1, 2]
    4. list.extend([3, 4])
    5. print(list)
    6. #append方法
    7. list1 = [3,4]
    8. list1.append(0)
    9. print(list1)
    10. list1.append([6,7])
    11. print(list1)
    12. 结果不同:
    13. [1, 2, 3, 4]
    14. [3, 4, 0]
    15. [3, 4, 0, [6, 7]]

    完整的for循环语法

    1. for num in [1, 2, 3]:
    2. print(num)
    3. if num == 2:
    4. break
    5. else:
    6. # 如果循环体内部使用了break退出了循环,
    7. # else下方代码就不会被执行
    8. print("执行")
    9. print("结束")
    10. 结果:
    11. 1
    12. 2
    13. 结束

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

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

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

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

    1. # 判断某一字典中是否存在指定的值,存在
    2. students = [
    3. {"name": "小红"},
    4. {"name": "小明"}
    5. ]
    6. find_name = "小hua"
    7. for stu in students:
    8. print(stu)
    9. # 如果找到就退出循环,不再遍历
    10. if stu["name"] == find_name:
    11. print("找到了%s" % find_name)
    12. break
    13. # 没找到就使用else
    14. # 本题中如果在if下面加else,每次都会输出没找到,
    15. # 但是在for下面加else,在循环搜索输出列表后才输出没找到
    16. else:
    17. print("抱歉哦,没找到%s" % find_name)
    18. print("循环结束")
    19. 结果:
    20. {'name': '小红'}
    21. {'name': '小明'}
    22. 抱歉哦,没找到小hua
    23. 循环结束

    python封装例子:摆放家具

    需求

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

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

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

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

    1. # 摆放家具
    2. class HouseItem:
    3. def __init__(self, name, area):
    4. self.name = name
    5. self.area = area
    6. def __str__(self):
    7. return "[%s] 占地 %.2f" % (self.name, self.area)
    8. class House:
    9. def __init__(self, house_type, area):
    10. self.area = area
    11. self.house_type = house_type
    12. # 剩余面积
    13. self.free_area = area
    14. # 家具名称列表
    15. self.item_list = []
    16. def add_item(self, item):
    17. print("将%s添加到房子中" % item)
    18. # 家具面积
    19. if item.area > self.free_area:
    20. print("%s面积太大,不能添加" % item)
    21. return
    22. # 将家具添加到列表中
    23. self.item_list.append(item.name)
    24. self.free_area -= item.area
    25. def __str__(self):
    26. return "户型: %s\n总面积:%.2f[剩余:%.2f]" \
    27. "\n家具名称列表:%s" % (self.house_type,
    28. self.area, self.free_area, self.item_list)
    29. # 创建家具
    30. bed = HouseItem("席梦思", 4)
    31. chest = HouseItem("衣柜", 2)
    32. table = HouseItem("餐桌", 1.5)
    33. print(bed)
    34. print(chest)
    35. print(table)
    36. # 创建房子对象
    37. my_house = House("两室一厅", 60)
    38. my_house.add_item(bed)
    39. my_house.add_item(chest)
    40. my_house.add_item(table)
    41. print(my_house)

    python封装例子:土兵突击

    需求

    1.士兵许三多有一把AK47

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

    1. # 一个对象的属性可以是另外一个类创建的对象
    2. class Gun:
    3. def __init__(self, model):
    4. # 枪的型号
    5. self.model = model
    6. # 子弹数量
    7. self.bullet_count = 0
    8. def add_bullet(self, count):
    9. self.bullet_count += count
    10. def __str__(self):
    11. return "这次拿的枪是[%s]" % self.model
    12. def shoot(self):
    13. # 判断子弹数量
    14. if self.bullet_count <= 0:
    15. print("[%s]没有子弹了" % self.model)
    16. return
    17. # 2发射子弹,-1
    18. self.bullet_count -= 1
    19. # 3 提示发射信息
    20. print("[%s]突突突----[%d]" % (self.model, self.bullet_count))
    21. class Soldier:
    22. def __init__(self, name):
    23. self.name = name
    24. self.gun = None
    25. def __str__(self):
    26. return
    27. def fire(self):
    28. # 判断士兵有枪
    29. if self.gun is None:
    30. print("[%s]没有枪,无法上战场" % self.name)
    31. return
    32. print("拿着冲啊")
    33. # 让枪装填子弹
    34. self.gun.add_bullet(50)
    35. # 发射子弹
    36. self.gun.shoot()
    37. ak47 = Gun("AK47")
    38. # ak47.add_bullet(50)
    39. # ak47.shoot()
    40. xusanduo = Soldier("许三多")
    41. xusanduo.gun = ak47
    42. xusanduo.fire()
    43. print(xusanduo.gun)

  • 相关阅读:
    2022面试,Java面试项目推荐,15个项目吃透两个offer拿到手软
    基于百度地图实现矩形绘制/电子围栏/自定义覆盖物选择、点击、区域选中、轨迹绘制
    LeetCode高频题55,45类似的1306. 跳跃游戏 III:从start位置跳到end位置,至少需要多少步,不行返回-1
    机器学习——决策树/随机森林
    14天学习训练营之 入门Pygame
    QT作业三
    两步随机接入机制的深度解析和未来增强
    Open vSwitch with DPDK
    了解Docker 依赖的linux内核技术
    【英语:语法基础】B1.核心语法-名词与代词
  • 原文地址:https://blog.csdn.net/qq_44832048/article/details/125463272