Python自定义函数练习(持续更新中~)

1.计算矩阵的面积和周长:

class Rectangle:def __init__(self, width, height):self.width = widthself.height = heightdef area(self):return self.width * self.heightdef perimeter(self):return 2 * (self.width + self.height)if __name__ == "__main__":rectangle = Rectangle(5, 10)print("矩形面积:", rectangle.area())print("矩形周长:", rectangle.perimeter())

2.将矩阵转置后,计算该矩阵与另一个矩阵的和并返回一个新的矩阵对象。

class Matrix:def __init__(self,data):self.data=data#矩阵转置def transpose(self):rows=len(self.data)cols=len(self.data[0])transpose_data=[[0 for _ in range(rows)]for _ in range(cols)]for i in range(rows):for j in range(cols):transpose_data[j][i]=self.data[i][j]return Matrix(transpose_data)#计算两矩阵之和def add(self,other_matrix):rows=len(self.data)cols=len(self.data[0])if rows !=len(other_matrix.data) or cols != len(other_matrix.data[0]):raise ValueError("两个矩阵维度不一致")result_data=[[0 for _ in range(cols)]for _ in range(rows)]for i in range(rows):for j in range(cols):result_data[i][j]=self.data[i][j]+other_matrix.data[i][j]return Matrix(result_data)if __name__ == "__main__":matrix1=Matrix([[1,2,3],[4,5,6]])matrix2=Matrix([[7,8,9],[10,11,12]])print("矩形1的转置:")transposed_matrix1=matrix1.transpose()for row in transposed_matrix1.data:print(row)print("矩阵1和矩阵2的和:")sum_matrix=matrix1.add(matrix2)for row in sum_matrix.data:print(row)

3.栈的基本操作

class Stack:def __init__(self):self.items = []def push(self, item):self.items.append(item)def pop(self):if self.is_empty():raise ValueError("栈为空")return self.items.pop()def is_empty(self):return len(self.items) == 0if __name__ == "__main__":stack = Stack()stack.push(1)stack.push(2)stack.push(3)while not stack.is_empty():print(stack.pop())

4.链表的基本操作

class Node:def __init__(self, value):self.value = valueself.next = Noneclass LinkedList:def __init__(self, head=None):self.head = headdef insert(self, value):new_node = Node(value)if self.head is None:self.head = new_nodeelse:current = self.headwhile current.next is not None:current = current.nextcurrent.next = new_nodedef delete(self, value):if self.head is None:returnif self.head.value == value:self.head = self.head.nextreturncurrent = self.headwhile current.next is not None:if current.next.value == value:current.next = current.next.nextreturncurrent = current.nextdef traverse(self):current = self.headwhile current is not None:print(current.value)current = current.nextif __name__ == "__main__":linked_list = LinkedList()linked_list.insert(1)linked_list.insert(2)linked_list.insert(3)linked_list.delete(2)linked_list.traverse()

5.队列的基本操作

class Queue:def __init__(self):self.items = []def is_empty(self):return len(self.items) == 0def enqueue(self, item):self.items.append(item)def dequeue(self):if not self.is_empty():return self.items.pop(0)#对于栈的操作为:self.items.pop()def size(self):return len(self.items)if __name__ == "__main__":q = Queue()print(q.is_empty())  # Trueq.enqueue(1)q.enqueue(2)q.enqueue(3)print(q.size())  # 3print(q.dequeue())  # 1print(q.dequeue())  # 2print(q.size())  # 1

6.Histogram类封装直方图

(1)定义带一个整数参数n的构造函数,用于初始化存储数据的列表,列表长度为n,列表各元素的初始值为0.

(2)定义实例对象方法addDataPoint(self,i),用于增加一个数据点

(3)定义用于计算数据点个数之和、平均值、最大值、最小值的实例对象方法,即count()、mean()、max()、min()。

(4)定义用于绘制简单直方图的实例对象方法draw()

import randomclass Histogram:def __init__(self,n):self.__numlist=[]for i in range(n):self.__numlist.append(0)#print(self.__numlist)def addDataPoint(self,i):self.__numlist[i]+=1def count(self,data_account):return data_accountdef mean(self,data_account,List_account):a=data_account/List_accountreturn (a)def Max(self):return max(self.__numlist)def Min(self):return min(self.__numlist)def draw(self):for i in range(len(self.__numlist)):print("{}:".format(i),end="")for j in range(self.__numlist[i]):print("#".format(i),end="")print("")if __name__=="__main__":List_account=10#规定numlist的大小histogram=Histogram(List_account)Data_account=100for i in range(0,Data_account):#生成0~99一百个数字random_number=random.randint(0,9)#随机生成0~9histogram.addDataPoint(random_number)#将生成的随机数放到列表中print("数据点个数的个数:{}".format(Data_account))print("数据点个数的平均值:{}".format(histogram.mean(Data_account, List_account)))print("数据点个数的最大值{}".format(histogram.Max()))print("数据点个数的最小值{}".format(histogram.Min()))histogram.draw()

结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/131912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AtCoder Beginner Contest 327 G. Many Good Tuple Problems(带标号二分图计数+有区别小球放入有区别盒子)

题目 一个长为n(n<30)的原始序列x&#xff0c;x[i]可以取值0或1 一个长为m(m<1e9)的点对序列(s,t)&#xff0c; s序列第i项和t的第i项&#xff0c;均可以取值[1,n]&#xff0c; 如果构造好s和t后&#xff0c;对任意都存在01序列x使得&#xff0c; 则称这个序列是合法…

【RabbitMQ】 RabbitMQ 消息的延迟 —— 深入探索 RabbitMQ 的死信交换机,消息的 TTL 以及延迟队列

文章目录 一、死信交换机1.1 什么是死信和死信交换机1.2 死信交换机和死信队列的创建方式 二、消息的 TTL2.1 什么是消息的 TTL2.2 基于死信交换机和 TTL 实现消息的延迟 三、基于 DelayExchang 插件实现延迟队列3.1 安装 DelayExchang 插件3.2 DelayExchang 实现消息延迟的原理…

perl列表创建、追加、删除

简介 perl 列表追加元素 主要是通过push和unshift函数来实现。其中&#xff0c;push是追加到列表尾&#xff0c;unshift是追加到列表头。 perl列表删除元素 主要是通过pop和shift函数来实现。其中&#xff0c;pop是从列表尾删除一个元素&#xff0c; shift是从列表头删除一…

6大场景,玩转ChatGPT!

文章目录 一、故事叙述提问举例 二、产品描述提问举例 三、报告撰写提问举例 四、邮件和信件撰写提问举例 五、新间稿和公告撰写提问举例 六、学术论文和专业文章撰写提问举例 本文是在GPT3.5版本下演示的 我们知道AI技术不仅能够自动生成文章和内容&#xff0c;还可以根据我们…

【大数据】NiFi 中的重要术语

NiFi 中的重要术语 1.Flow Controller2.Processor3.Connection4.Controller Service5.Process Group6.FlowFile 那些一个个黑匣子称为 Processor&#xff0c;它们通过称为 Connection 的队列交换名为 FlowFile 的信息块。最后&#xff0c;FlowFile Controller 负责管理这些组件…

XSAN数据恢复-存储空间架构迁移时误格式化存储系统的XSAN数据恢复案例

XSAN数据恢复环境&#xff1a; 昆腾存储&#xff0c;MAC OS操作系统&#xff0c;存放视频类数据&#xff08;MXF、MOV等格式文件&#xff09;。 XSAN故障&检测&#xff1a; 将存储空间从XSAN架构迁移到STORNEXT架构后&#xff0c;存储空间中数据全部丢失。 故障存储中一共…

蓝桥杯官网填空题(方格计数)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 如下图所示&#xff0c;在二维平面上有无数个 11 的小方格。 我们以某个小方格的一个顶点为圆心画一个半径为 50000 的圆。 你能计算出这个圆里有多少个完整的小方…

Azure 机器学习 - 设置 AutoML 训练时序预测模型

目录 一、环境准备二、训练和验证数据三、配置试验支持的模型配置设置特征化步骤自定义特征化 四、可选配置频率和目标数据聚合启用深度学习目标滚动窗口聚合短时序处理非稳定时序检测和处理 五、运行试验六、用最佳模型进行预测用滚动预测评估模型精度预测未来 七、大规模预测…

Flink源码解析八之任务调度和负载均衡

源码概览 jobmanager scheduler:这部分与 Flink 的任务调度有关。 CoLocationConstraint:这是一个约束类,用于确保某些算子的不同子任务在同一个 TaskManager 上运行。这通常用于状态共享或算子链的情况。CoLocationGroup & CoLocationGroupImpl:这些与 CoLocationCon…

已完结,给小白的《50讲Python自动化办公》

大家好&#xff0c;这里是程序员晚枫&#xff0c;小红薯也叫这个名。 写在前面 上个周末去成都参加了第8届中国开源年会&#xff0c;认识了很多行业前辈和优秀的同龄人。 我发现在工作之外还能有一番事业的人&#xff0c;都有一个让我羡慕的共同点&#xff1a;有一个拿得出手…

C++笔记之表驱动法

C笔记之表驱动法 code review! 文章目录 C笔记之表驱动法0.数组小技巧1.std::map实现2.结构体实现3.数组和结构体结合实现表驱动法-存储函数指针4.表驱动法概念-ChatGPT5. 直接访问表&#xff08;Direct Access Table&#xff09;的示例6. 索引访问表&#xff08;Indexed Acc…

Yolov8目标识别与实例分割——算法原理详细解析

前言 YOLO是一种基于图像全局信息进行预测并且它是一种端到端的目标检测系统&#xff0c;最初的YOLO模型由Joseph Redmon和Ali Farhadi于2015年提出&#xff0c;并随后进行了多次改进和迭代&#xff0c;产生了一系列不同版本的YOLO模型&#xff0c;如YOLOv2、YOLOv3、YOLOv4&a…

项目上线前发现严重Bug怎么办?

今天分享一个面试问题&#xff0c;现在有一个面试场景&#xff1a; 项目计划明天发布&#xff0c;但是在今天你作为测试人员发现了一个严重的bug&#xff0c;市场相关人员又在催发布的事情&#xff0c;这个时候你应该怎么办&#xff1f; 这是测试工程师不管是在面试&#xff0…

JVM常用命令

jps —查看pid jstat -gcutil 4364 1000 2000 —查看堆内存占用百分比&#xff0c;每秒打印1次&#xff0c;总共打印2000次 S0&#xff1a;幸存1区当前使用比例 S1&#xff1a;幸存2区当前使用比例 E&#xff1a;伊甸园区使用比例 O&#xff1a;老年代使用比例 M&#xff1a;元…

基于计算机视觉的身份证识别系统 计算机竞赛

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于机器视觉的身份证识别系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-sen…

初识jQuery

文章目录 一、jQuery介绍二、Jquery优势三、jQuery版本四、jQuery对象jQuery的引用js代码与jQuery代码对比标签对象与jQuery对象 五、jQuery查找标签1.基本选择器2.组合选择器3.层次选择器4.属性选择器5.基本筛选器6.表单筛选器 六、筛选器方法七、操作标签1.class操作2.文本操…

048基于web+springboot的校园资料分享平台

欢迎大家关注&#xff0c;一起好好学习&#xff0c;天天向上 文章目录 一项目简介技术介绍 二、功能组成三、效果图四、 文章目录 一项目简介 本校园资料分享平台有管理员和用户两个角色。管理员功能有个人中心&#xff0c;学生管理&#xff0c;资料分享管理&#xff0c;资源分…

FastBond2阶段2——基于ESP32C3开发的简易IO调试设备

1. 项目介绍 之前买了许多国产单片机esp32c3一直在吃灰&#xff0c;没有发挥它的真实价值。非常感谢硬禾组织的Fastbond2活动&#xff0c;刚好两者经过微妙的碰撞。恰可以用于FastBond2活动主题4 - 测量仪器&#xff08;单片机开发测试领域&#xff09;&#xff0c;或者用于国…

VR全景在医院的应用:缓和医患矛盾、提升医院形象

医患关系一直以来都是较为激烈的&#xff0c;包括制度的不完善、医疗资源紧张等问题也时有存在&#xff0c;为了缓解医患矛盾&#xff0c;不仅要提升患者以及家属对于医院的认知&#xff0c;还需要完善医疗制度&#xff0c;提高医疗资源的配置效率&#xff0c;提高服务质量。 因…

Linux学习笔记之三(vim编辑器)

目录 1、vim的四种工作模式2、正常模式下的操作指令2.1、进入编辑模式2.2、进入命令行模式2.3、进入视觉模式2.4、光标跳转2.5、复制、粘贴、删除2.6、重复、撤回操作 3、命令行模式下的操作指令 1、vim的四种工作模式 vim的四种工作模式分别是编辑模式(insert mode)、命令行模…