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.rhkb.cn/news/182087.html

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

相关文章

JAVA电商平台免费搭建 B2B2C商城系统 多用户商城系统 直播带货 新零售商城 o2o商城 电子商务 拼团商城 分销商城

1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

最速下降法

目录 前言 一、梯度下降相关数学概念 二、最速下降法实战 2.1、例图1 2.2、Matlab代码实现 2.3、例题2 三、小结 前言 最速下降法,在SLAM中,作为一种很重要求解位姿最优值的方法,缺点很明显:迭代次数太多&#xff0c…

YOLO v2(2016.12)

文章目录 AbstractIntroduction当前存在的困境基于此,我们给出了方法 BetterBatch NormalizationHigh Resolution ClassifierConvolutional With Anchor BoxesDimension ClustersDirect location predictionFine-Grained FeaturesMulti-Scale TrainingFurther Exper…

海洋专用cmocean颜色包_共22种--全平台可用

海洋专用cmocean颜色包_共22种–全平台可用 往期推荐: Python语言_matplotlib包_共80种–全平台可用 Python语言_single_color_共140种–全平台可用 R语言_RColorBrewer包–全平台可用 R语言gplots包的颜色索引表–全平台可用 R语言中的自带的调色板–五种–全平台…

(后续补充)vue+express、gitee pm2部署轻量服务器

首先 防火墙全部关闭算了 首先 防火墙全部关闭算了 首先 防火墙全部关闭算了 首先 防火墙全部关闭算了 首先 防火墙全部关闭算了 首先 防火墙全部关闭算了 关闭防火墙 systemctl stop firewalld 重新载入防火墙使设置生效 firewall-cmd --reload 后端的 pm2.config.cjs …

Centralized Feature Pyramid for Object Detection解读

Centralized Feature Pyramid for Object Detection 问题 主流的特征金字塔集中于层间特征交互,而忽略了层内特征规则。尽管一些方法试图在注意力机制或视觉变换器的帮助下学习紧凑的层内特征表示,但它们忽略了对密集预测任务非常重要的被忽略的角点区…

云智慧联合北航提出智能运维(AIOps)大语言模型及评测基准

随着各行业数字化转型需求的不断提高,人工智能、云计算、大数据等新技术的应用已不仅仅是一个趋势。各行业企业和组织纷纷投入大量资源,以满足日益挑剔的市场需求,追求可持续性和竞争力,这也让运维行业迎来了前所未有的挑战和机遇…

文举论金:黄金原油全面走势分析策略独家指导

市场没有绝对,涨跌没有定势,所以,对市场行情的涨跌平衡判断就是你的制胜法宝。欲望!有句意大利谚语:让金钱成为我们忠心耿耿的仆人,否则,它就会成为一个专横跋扈的主人。空头,多头都…

GitLab CI/CD使用经验,来自于莫纳什大学的考试任务解析

CI/CD简介 CI/CD的作用在于自动化和加速软件开发、测试和交付流程,通过持续集成确保代码协同工作和质量,通过持续交付降低风险,使每次代码变更都能够快速、高质量地交付到生产环境,从而提高软件开发效率、质量和协作。 作业要求…

openGauss学习笔记-115 openGauss 数据库管理-设置安全策略-设置密码安全策略

文章目录 openGauss学习笔记-115 openGauss 数据库管理-设置安全策略-设置密码安全策略115.1 操作步骤 openGauss学习笔记-115 openGauss 数据库管理-设置安全策略-设置密码安全策略 115.1 操作步骤 用户密码存储在系统表pg_authid中,为防止用户密码泄露&#xff…

ffmpeg mp3截取命令,视频与mp3合成带音频视频命令

从00:00:03.500开始截取往后长度到结尾的mp3音频(这个更有用,测试好用) ffmpeg -i d:/c.mp3 -ss 00:00:03.500 d:/output.mp3 将两个音频合并成一个音频(测试好用) ffmpeg -i "concat:d:/c.mp3|d:/output.mp3&…

前端框架Vue学习 ——(四)Axios

文章目录 Axios 介绍Axios 入门Vue项目中使用 Axios Axios 介绍 介绍: Axios 对原生的 Ajax 进行了封装,简化书写,快速开发。(异步请求) 官网: https://www.axios-http.cn/ 官网介绍:Axios 是一个基于 promise 网络请…

20.5 OpenSSL 套接字RSA加密传输

RSA算法同样可以用于加密传输,但此类加密算法虽然非常安全,但通常不会用于大量的数据传输,这是因为RSA算法加解密过程涉及大量的数学运算,尤其是模幂运算(即计算大数的幂模运算),这些运算对于计…

编码器类型说明

目录 光电编码器 磁性编码器 电容式编码器 对比优缺点 编码器在运动控制类产品中比较常见,旋转编码器都是组成运动控制反馈回路的关键元器件,包括工业自动化设备和过程控制、机器人技术、医疗设备、能源、航空航天等。 作为将机械运动转换为电信号的…

❤️ React的安装和使用(实战篇)

React的安装和使用 一、React的安装和使用 reactJs警告提示: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap 翻译:tar2.2.2:此版本的tar不再受支持,将不会收到安全…

新大陆NVH200-AP(U)扫码枪在上位机软件开发中的应用

前言: 由于本次使用的是USB接口的扫码枪 1、先安装Nset软件,使用扫码枪扫描“启动设置条码”,然后扫描“USB CDC串口”条码 2、打开NSet软件,点击“刷新按钮” 就能找到扫码枪设备 3、设置条码后缀 点击“高级设置”,然后点击“数据编辑”,在“后缀”那里设置结束符…

1-3 docker 安装 prometheus

一、环境 1、环境准备 安装Docker 镜像加速 安装 docker 检查版本 安装Docker-compose 二、Docker-compose 安装 Prometheus 1、【方式一】手动创建 docker-compose 和 配置文件 创建prometheus监控的文件夹 创建alertmanager的配置文件 - config.yml 新建grafana的…

windows mysql安装

1、首先去官网下载mysql安装包,官网地址:MySQL :: Download MySQL Community Server 2:把安装包放到你安装mysql的地方,然后进行解压缩,注意,解压后的mysql没有配置文件,我们需要创建配置文件 配…

红黑树——原理刨析

众所周知,红黑树是从AVLTree树中衍变而来的,所以在学红黑树之前还是要好好的理解一下AVLTree树的原理,为理解红黑树减轻理解负担,好了进入正题。 红黑树原理: 由名可知,红黑树——肯定是与颜色有关的一个树…

操作系统——文件在外存中的分配方式(王道视频p61 P62)

1.总体概述: 连续分配 —— 链接分配 —— 索引分配 (1)对于顺序分配,这种方式 基本不会使用了, 因为 它存在一个 核心的问题就是 没法更新;不过,还是要注意它的 “文件目录”——其中存放了…