Python 实验四 常用数据结构(1)

news2024/12/26 21:14:05

1.从键盘输入一个正整数列表,以一1结束,分别计算列表中奇数和偶数的和。

n = int(input("请输入一个正整数:"))
list = [] 
while n != -1:
    list.append(n)
    n = int(input("请输入一个正整数:"))
else:
    print("输入结束")
 
list1 = []
list2 = []
for i in list:
    if i % 2 != 0 :
        list1.append(i)
    else:
        list2.append(i)
        
print()
print("列表为:",list)
print("列表中的奇数的和为:",sum(list1))
print("列表中的偶数的和为:",sum(list2))

在这里插入图片描述
2.已知10个学生的成绩为68、75、32、99、78、45、88、72、83、78,请将成绩存放在列表中,请对其进行统计,输出优(100-90)、良(89-80)、中(79-60)、差(59-0)4个等级的人数。

grade = int(input("请输入学生成绩:"))
list = []
while grade > 0:
    list.append(grade)
    grade = int(input("请输入学生成绩:"))
else:
    print("成绩输入结束,现在开始统计和输出。")
    
print()
print("总成绩列表为:",list)
list1=[]
list2=[]
list3=[]
list4=[]
for i in list:
    if i>=90:
        list1.append(i)
    elif i>=80:
        list2.append(i)
    elif i>=60:
        list3.append(i)
    else:
        list4.append(i)
print("优:",len(list1),"良:",len(list2),"中:",len(list3),"差:",len(list4))

在这里插入图片描述

3.利用while循环创建一个包含10个奇数的列表,如果输入的不是奇数要给出提示信息并能继续输入,然后计算该列表的和与平均值。

list=[]
i=0
while i<10:
    n = int(input("请输入奇数:"))
    if n % 2 != 0:
        list.append(n)
        i+=1
    else:print("输入错误,请重新输入。")
        
print()
print("列表为:",list)
print("列表的和为:",sum(list))
print("列表的平均值为:",sum(list)/len(list))

在这里插入图片描述
4.请用字典编程,已知某班学生的姓名和成绩如下:
在这里插入图片描述
输出这个班的学生姓名和成绩,并求出全班同学的人数和平均分并显示。

dict = {"张三":45,"李四":78,"徐来":40,"沙思思":96,"如一":65,"司音":90,"赵敏":78,"张旭宁":99,"柏龙":60,"思琪":87}
list = dict.values()
 
print("姓名 成绩")
for i in dict:
    print(i,dict[i])
    
print()
print("班级人数:",len(list))
print("班级平均分:",sum(list)/len(list))

在这里插入图片描述
5.某家商店根据客户消费总额的不同将客户分为不同的类型。如果消费总额≥10万元,为铂金卡客户(platinum);如果消费总额≥5万元且<10万元,为金卡客户(gold);如果消费总额≥3万元且<5万元,为银卡客户(silver);如果消费总额<3万元,为普卡客户(ordinary)。现有一批顾客的消费金额(单位:万元)分别为2.3、4.5、24、17、1、7.8、39、21、0.5、1.2、4、1、0.3.将消费金额存储在列表list1中,输出一个字典,分别以platinum、gold、silver、ordinary为键,以各客户类型人数为值。

amount = float(input("请输入客户消费总额:"))
platinum = []
gold = []
silver = []
ordinary = []
while amount >= 0:
    if amount >= 10:
        platinum.append(amount)
    elif amount >= 5:
        gold.append(amount)
    elif amount >= 3:
        silver.append(amount)
    else:
        ordinary.append(amount)
    amount = float(input("请输入客户消费总额:"))
else:
    print("输入结束,统计数据。")
list1=platinum+gold+silver+ordinary
    
print()
print("list1:",list1)
dict = {"platinum":len(platinum),"gold":len(gold),"silver":len(silver),"ordinary":len(ordinary)}
print(dict)

在这里插入图片描述
【实验总结】
1、列表list
列表是Python中最基本的数据结构,是最常用的Python数据类型。列表将由若干数据作为元素的序列放置在一对方括号中,元素之间以逗号分隔。Python列表元素可以由任意类型的数据构成。同一列表中各元素的类型可以各不相同。列表中的元素允许重复。此外,Python列表是可以修改的,修改方式包括向列表添加元素、从列表删除元素以及对列表的某个元素进行修改。
(1)创建列表
列表的创建,即用一对方括号将以逗号分隔的若干数据(表达式的值)括起来。
(2)列表访问
列表访问,也就是对列表的索引操作的过程,并返回索引位置上的元素。列表中的每个元素被关联一个序号,即元素的位置,也称为索引。索引值是从0开始,第二个则是 1,以此类推,从左向右逐渐变大;列表也可以从后往前,索引值从-1开始,从右向左逐渐变小。该访问方式适用于所有序列类型的对象:列表、元组、字符串。
① 一维列表的访问
若一个列表有n个元素,则访问元素的合法索引范围是-n~n-1,当序号x为负时,表示从右边计数,其访问的元素实际为序号为n+x的元素。这个规律对所有序列类型均有效。
② 二维列表的访问
对二维列表中的元素进行访问,需要使用两对方括号来表示,第一个表示选择子列表,第二个在选中的子列表中再选择其元素。
(3)del命令
使用del命令可以从列表中删除元素,也可以删除整个列表。删除列表元素除了前面介绍的del命令以外,还有remove()、pop()、clear()方法。
(4)列表运算
①列表相加
通过列表相加的方法生成新列表。
②列表相乘
用数字n乘以一个列表,会生成一个新列表。在新列表中原来列表的元素将被重复n次。
(5)列表方法
①index(value[,start=0[,stop]])
index()方法用于从列表中找出与value值匹配的第一个元素索引位置。如果没有指定参数start的值,则从索引为0的位置开始查找,否则从索引为strat的位置开始查找。如果没有指定结束索引位置stop的值,可以查找到列表最后元素,否则在位于[start, stop)内的索引区间查找。如果找不到匹配项,就会引发异常。
实际上可以先使用in运算符测试某个元素是否在该列表中,避免用index()查找索引位置时由于找不到指定元素而导致的错误。
②count()
count()方法,用于统计某个元素在列表中出现的次数。
添加列表元素除了前面介绍的“+”、“+=”、“”、“=”运算符以外,还有append()、extend()、insert()方法。
③append()
append()方法,追加单个元素到列表的尾部,只接受一个元素,元素可以是任何数据类型,被追加的元素在列表中保持着原结构类型。
④extend()
extend()方法,在列表的末尾一次性追加另一个列表中的多个值,可以用新列表扩展原有的列表。
⑤insert()
insert()方法,将一个元素插入到列表中的指定位置。列表的insert方法有两个参数,第一个参数是索引点,即插入的位置,第二个参数是插入的元素。
⑥remove()
remove()方法,用于移除列表中与某值匹配的第一个元素。如果找不到匹配项,就会引发异常。
⑦pop()
pop()方法用于移除列表中的一个元素(默认为最后一个元素),并且返回该元素的值。pop()方法可以指定索引位置,当不在索引范围内或者从空列表中使用此方法均会触发异常。
⑧clear()
clear()方法用于删除列表中所有元素,但保留列表对象。请注意与del命令的区别,del命令删除整个列表时,列表对象不再保留。
⑨列表排序有reverse()、sort()方法
reverse()
reverse()方法,用于将列表中的元素位置反向存放。列表中可以有不同类型的元素,reverse()方法只是将位置反转。
sort()
sort()方法,用于将列表中的元素进行排序。默认按升序排列。使用reverse参数来指明列表是否降序排列,参数是简单的布尔值True或False,若其值等于True表示降序排序,默认为False。如果列表中包含的是字符串,按字母串排序规则排序。可以使用key参数。
(6)列表函数
①len()函数
len()函数,用于返回列表中所包含元素的个数。
②max()函数
max()函数,用于返回列表中元素的最大值。
列表中只能包含可相互比较的元素,如列表元素中既有数字又有字符串则会出错。
③min()函数
min()函数,用于返回列表中所包含元素的最小值。同样,如果列表中包含的是字符串,也按字符串的比较大小方法排序返回最小值,列表中只能包含可相互比较的元素。
③ reversed()函数
reversed()函数,将列表中的元素位置反向并返回可迭代的reversed对象。可以和list()函数联合起来使用得到列表。
④ sorted()函数
sorted()函数,对列表进行排序并返回新列表。
(7)列表遍历
可以通过for语句或者while语句循环遍历列表中所有元素。
2、元组tuple
元组由不同的元素组成,每个元素的数据类型可以各不相同,如字符串、数字和元组等。元组和列表十分相似,元组是用一对圆括号括起、用逗号分隔的多个元素的组合。元组也是序列的一种,可以利用序列操作对元组进行处理。
元组的操作和列表有很多的相似之处,但元组和列表之间也存在重要的不同,元组是不可更改的,是不可变对象。元组创建之后就不能修改、添加、删除成员。元组的上述特点使得其在处理数据时效率较高,而且可以防止出现误修改操作。
(1)元组创建
元组的创建,即用一对圆括号将以逗号分隔的若干元素(数据、表达式的值)括起来。
(2)元组访问
和列表一样,可以通过索引、切片来访问元组的成员。
(3)元组运算
①元组相加
通过元组相加的方法生成新元组。
②元组相乘
用数字n乘以一个元组,会生成一个新元组。在新元组中原来的元组元素将依次被重复n次。
③元组遍历
与列表类似,也可以通过for语句或者while语句实现循环遍历元组中的所有元素。
(4)列表与元组之间的转换
①列表转换成元组
Python中的tuple()函数可以接受一个列表,并返回一个包含同样元素的元组。从结果上看,tuple()函数冻结了列表。
②元组转换成列表
Python中的list()函数接受一个元组,并返回一个包含同样元素的列表。从结果上看, list()函数融化了元组。
3、字典
字典是Python中唯一内建的映射类型,用一对花括号“{”和“}”作为边界,元素之间以逗号分隔,每个元素是一对键(key)和值(value),键和值之间用英文冒号分隔。字典可通过数据key查找关联数据value。Python中字典的元素没有特殊的顺序,因此不能像序列那样通过位置索引来查找成员数据。但是每一个值都有一个对应的键。字典的用法是通过键key来访问相应的值value,字典的键是不重复的。
(1)创建字典
在字典中,键可以是任何不可修改类型的数据,如数值、字符串和元组等,列表是可变的,不能作为字典的键;而键对应的值可以是任何类型的数据。字典是无序集合,字典的显示次序由字典在内部的存储结构决定。
(2)字典操作
①字典中“键-值”对的数量
len()可以返回字典中项(键-值对)的数量。
②查找与特定键相关联的值
查找与特定键相关联的值,其返回值就是字典中与给定的键相关联的值。
③修改字典中的数据
在字典中,某个键相关联的值可以通过赋值语句来修改,如果指定的键不存在,则相当于向字典中添加新的键值对。
④删除字典条目
del命令可以用来删除字典条目或者整个字典。
⑤检查字典中是否含有某键的项
in命令可以查找某键值是否在字典中。如果存在返回“True”,否则返回“False”。
(3)字典方法
①keys()、values()
keys()方法将字典中的键以可迭代的dict_keys对象返回。values()方法将字典中的值以可迭代的dict_values对象形式返回。
②items()
items()方法将字典中的所有键和值以可迭代的dict_items对象形式返回,每对键值对组成元组作为一个元素。
③setdefault()
使用dict.setdefault(key, default=None)时,如果字典中包含参数key对应的键,则返回该键对应的值;否则以参数key的值为键,以参数default的值为该键对应的值,在字典中插入键-值对元素,并返回该元素的值部分。
④update()
update()方法将另一个字典中的所有键值对一次性地添加到当前字典中,如果两个字典中存在有相同的键,则以另一个字典中的值更新当前字典。
⑤clear()
clear()方法将字典中的所有条目删除,变成空字典。
⑥pop()
pop()方法能够弹出并删除字典中的键值对。
⑦popitem()
popitem()方法能够弹出字典的一个元素,如果字典为空则触发异常。
⑧get()
get()方法返回指定键所对应的值,如果键不存在则返回默认值。默认值为None,也可以自己指定。
(4)列表、元组与字典之间的转换
①列表与字典之间的转化
Python中的list()函数可以将字典转换列表,但列表不能转换为字典。
②元组与字典之间的转化
Python中的tuple()函数可以将字典转换元组,但元组不能转换为字典。

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

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

相关文章

Linux下C/C++实现(网络流量分析-NTA)

网络流量分析&#xff08;NTA - Network Traffic Analysis) 就是捕捉网络中流动的数据包&#xff0c;并通过查看包内部数据以及进行相关的协议、流量、分析、统计等&#xff0c;协助发现网络运行过程中出现的问题。通过监控和分析网络环境中的流量&#xff0c;来判断流量是用在…

electron编译环境搭建和第一个桌面应用例子

前言 Electron是基于Chromium和Node.js实现的&#xff0c;所以开发人员所需要使用到的前端技术主要包括以下方面&#xff1a; 1、Html、CSS、JavaScript、ES6 2、前端开发工具Vue、Angular、React等的一种 3、其他网络、缓存、通讯、系统、跟踪等前端技术 4、对Vscode编辑…

SpringCloud --- 认识微服务、服务拆分和远程调用

一、认识微服务 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢&#xff1f; 1.1、单体架构 单体架构&#xff1a;将业务的所有功能集中在一个项目中开发&#xff0c;…

C++学习(day5)

文章目录 一. 静态成员变量和函数(static)1. 静态成员变量2. 静态成员函数 二. 类的继承&#xff08;inhert&#xff09;1. 继承2. 继承的作用3. 一个类B继承类A4. 继承格式5. 子类会继承父类的所有成员6. 当父子类中出现同名的成员时7. **继承中构造函数和析构函数调用顺序**8…

反垃圾邮件产品测试评价方法示意图

声明 本文是学习信息安全技术 反垃圾邮件产品技术要求和测试评价方法. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 反垃圾邮件产品测试评价方法 测试环境 反垃圾邮件产品的典型测试环境如图1所示。 图1 反垃圾邮件产品典型测试环境示意图 测试设…

快速识别 SLI 指标的方法:VALET

SLI&#xff0c;Service Level Indicator&#xff0c;服务等级指标&#xff0c;其实就是我们选择哪些指标来衡量我们的稳定性。而 SLO&#xff0c;Service Level Objective&#xff0c;服务等级目标&#xff0c;指的就是我们设定的稳定性目标&#xff0c;比如“几个 9”这样的目…

Android音视频开发-OpenGL ES正交投影实现方法

本文实例为大家分享了OpenGL ES正交投影展示的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 绘制正方形 在最开始绘制的六边形里面好像看起来挺容易的&#xff0c;也没有出现什么问题&#xff0c;接下来不妨忘记前面绘制六边形的代码&#xff0c;让我们按照自己的…

设计模式——组件协作模式之模板方法模式

文章目录 前言一、“组件协作” 模式二、模板方法模式1、动机2、源码分析讲解①、结构化软件设计②、面向对象软件设计 三、模板方法模式定义四、结构要点总结 前言 一、“组件协作” 模式 现代软件专业分工之后的第一个结果是 “框架与应用程序的划分”&#xff0c;“组件协作…

部署LVS-NAT群集实验

一、 实验准备 负载调度器&#xff1a;内网关 ens33&#xff1a;192.168.109.12&#xff0c;外网关 ens37&#xff1a;12.0.0.1外网 Web节点服务器1&#xff1a;192.168.109.13 Web节点服务器2&#xff1a;192.168.109.14 NFS服务器&#xff1a;192.168.109.11 客户端&#xf…

C#基础学习--其他主题

目录 概述 字符串 使用StringBuilder类 把字符串解析为数据值 关于可空类型的更多内容 为可空类型赋值 使用空接合运算符 Main方法 文档注释 嵌套类型 析构函数和dispose模式 概述 再本章中会讲解一些重要的杂项知识 字符串 字符串是Unicode字符串数组 字符串是不可…

ISO-27145故障诊断说明

ISO-27145故障诊断说明 2.1 27145目录说明 ISO27145-1: 这里边介绍的是一般信息和用例定义&#xff1b; ISO27145-2: 这里边介绍的是与排放相关的通用数据规则&#xff0c;用于查询&#xff1b; ISO27145-3: 这里边主要介绍了支持的服务 12服务 14服务 19服务 22服务 31服务&…

【移动端网页布局】移动端网页布局基础概念 ⑧ ( 移动端页面布局方案 | 单独制作的移动端页面 - 主流 | 响应式页面兼容移动端 - 开发难度较大 )

文章目录 一、移动端页面布局方案1、单独制作的移动端页面2、响应式页面兼容移动端 一、移动端页面布局方案 移动端页面方案 : 单独制作的移动端页面 : 主流开发方案 , PC 端 与 移动端 访问的是不同的页面 , 目前的 京东 / 淘宝 等电商网站移动端页面采取的该方案 ;响应式页面…

高效编程----VSCode+ChatGPT插件

VSCode中使用ChatGPT插件 首先在VSCode中打开扩展面板&#xff0c;搜索ChatGPT&#xff0c;安装蓝色圈出插件&#xff0c;如图所示&#xff1a; 安装完成后&#xff0c;需要重启VSCode 注册账号&#xff0c;如图所示&#xff1a; 然后在ChatGPT对话框中输入信息即可使用&#…

[oeasy]python0137_相加运算_python之禅_import_this_显式转化

变量类型 相加运算 回忆上次内容 上次讲了是从键盘输入变量input 函数 可以有提示字符串需要有具体的变量接收输入的字符串 输入单个变量没有问题 但是输入两个变量之后一相加就非常离谱 怎么办呢&#xff1f;&#x1f914; 基本实验 回到 游乐场 做个 实验 两个整数 相加…

C++STL——map与set的模拟实现

map与set的模拟实现 map与set的部分源码参考改造红黑树红黑树的迭代器补全set与map的实现完整代码 map与set的部分源码参考 map和set的底层都是由红黑树实现的。 所以这里将上次实现的红黑树插入拿来用。 首先想一想&#xff0c;搜索二叉树不能修改值&#xff0c;因为会破坏整…

第十章 装饰者模式

文章目录 前言一、装饰者模式定义装饰者模式 UML图 二、装饰者模式解决星巴克咖啡订单完整代码Drink 抽象 饮料类Coffee 咖啡类继承 Drink 做一个缓冲层Espresso 意大利咖啡 继承 CoffeeLongBlack 咖啡ShortBlack 咖啡装饰者&#xff0c;调料牛奶巧克力豆浆咖啡店测试程序添加 …

01-yolo算法

要点&#xff1a; 归纳 YOLOv5 github 1 YOLO v1 1) 将一幅图像分成SxS个网格(grid cell)&#xff0c;如果某个object的中心 落在这个网格中&#xff0c;则这个网格就负责预测这个object。 2)每个网格要预测B个bounding box&#xff0c;每个bounding box 除了要预测位置之…

TortoiseSVN使用-合并分支代码

文章目录 3.4.12 合并分支代码TortoiseSVN有2种合并方式演示场景1&#xff1a;&#xff08;合并一个版本范围 Merge a range of revisions&#xff09;演示场景2&#xff1a;&#xff08;合并两个不同的树 Merge two different trees&#xff09;&#xff0c;不设置主分支版本演…

初窥Edubuntu 23.04:装有教育软件的Ubuntu桌面

导读4月20日&#xff0c;Edubuntu将作为Ubuntu官方口味卷土重来&#xff0c;作为即将发布的Ubuntu 23.04&#xff08;Lunar Lobster&#xff09;的一部分&#xff0c;所以我认为让你们先看看这个重制版中包含的内容是个好主意。 Edubuntu以前被称为Ubuntu教育版&#xff0c;最…

Anaconda安装及tensorflow安装

1.下载Anaconda安装包&#xff0c;并安装好 官网下载网址&#xff1a;https://www.anaconda.com/download/ 清华映像站&#xff1a; https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 注意&#xff1a;注意安装anaconda时一定要把环境变量加入windows环境中。若没有…