当前位置: 首页 > article >正文

Python学习38天

class Person:

    def __init__(self, name, age, job):
        self.name = name
        self.age = age
        self.job = job

    # 重写函数返回属性
    def __str__(self):
        return f"{self.name}--{self.age}--{self.job}"


# 冒泡排序法
def bubble_sort(my_list: list[Person]):
    """
    冒泡排序,从大到小排列
    :param my_list:
    :return:
    """
    # j控制总排序次数
    for j in range(len(my_list) - 1):
        # i控制每次排序比较的次数
        for i in range(len(my_list) - 1 - j):
            # 当列表中后一个的年龄大于前一个的年龄时,交换
            if list[i].age < list[i + 1].age:
                # 两数交换
                list[i], list[i + 1] = list[i + 1], list[i]


p1 = Person("tom", 35, "老师")
p2 = Person("amy", 18, "学生")
p3 = Person("jack", 52, "校长")

list = [p1, p2, p3]

print("排列前".center(32, "_"))
# 遍历列表
for i in range(len(list)):
    print(list[i])

# 使用sort进行排序
'''
key=lambda ele:ele.age--表示我指定按照列表元素的age属性进行排序
reverse=True--表示逆序-从大到小排列
reverse=False--表示顺序-从小到大排列
'''
list.sort(key=lambda ele: ele.age, reverse=False)

print("从小到达排列后".center(32, "_"))
for i in range(len(list)):
    print(list[i])

# 调用冒泡排序函数
bubble_sort(list)

print("从大到小排列后".center(32, "_"))
for i in range(len(list)):
    print(list[i])

class Doctor:

    def __init__(self, name, age, job, gender, sal):
        self.name = name
        self.age = age
        self.job = job
        self.gender = gender
        self.sal = sal

    # 重写eq方法
    def __eq__(self, other):
        # 首先判断比较直是否为同类
        if not isinstance(other,Doctor):
            return False
        else:
            return (self.name == other.name
                    and self.age == other.age
                    and self.job == other.job
                    and self.gender == other.gender
                    and self.sal == other.sal)


p1 = Doctor("tom", 28, "护士", "女", 10000)
p2 = Doctor("tom", 28, "护士", "女", 10000)

# p1==p2默认会调用__eq__方法
print("p1==p2",p1==p2)


http://www.kler.cn/a/420288.html

相关文章:

  • 【JMX JVM监控】Prometheus读取Trino的JMX数据到Grafana展示
  • 深度学习-53-AI应用实战之基于labelImg和labelme的手动标注
  • xiaolin coding 图解 MySQL笔记——事务篇
  • 《C++ Primer Plus》学习笔记|第10章 对象和类 (24-12-2更新)
  • 【计算机网络】实验3:集线器和交换器的区别及交换器的自学习算法
  • 基于大数据python 电商数据分析及推荐可视化系统(源码+LW+部署讲解+数据库+ppt)
  • 【赵渝强老师】PostgreSQL的物理存储结构
  • 【jvm】C1编译器和C2编译器的区别
  • 解决maya渲染慢、渲染卡顿等问题
  • Qt/C++实现帧同步播放器/硬解码GPU绘制/超低资源占用/支持8K16K/支持win/linux/mac/嵌入式/国产OS等
  • 详解Qt pdf 之QPdfSelection 选择文本类
  • debian 11 虚拟机环境搭建过坑记录
  • 机器学习7-AdaBoost算法
  • Springboot聚合工程实现不同module使用不同的数据库配置操作数据库,实现自由切库
  • CTF-PWN: 全保护下格式化字符串利用 [第一届“吾杯”网络安全技能大赛 如果能重来] 赛后学习(不会)
  • 《Serverless 架构:引领未来软件开发的新趋势》
  • 【Vue3】弹窗添加鼠标hover上边缘左、下的的拉伸宽度高度操作
  • atcoder abc 382 lazy_tag线段树
  • 关于Nginx前后端分离部署spring boot和vue工程以及反向代理的配置说明
  • 学习ASP.NET Core的身份认证(基于Session的身份认证2)
  • 域名解析系统 DNS
  • vue和react的diff算法区别?
  • Git 使用总结
  • 【前端面试】数据结构与set和map
  • ETSI EN 300328 标准的一些笔记
  • Qt | TCP客户端简单实现+TCP助手测试