Python程序设计 二维列表(二)

实验九 二维列表

1. 血压统计

血压的正常范围是 60mmHg<舒张压<90mmHg 90mmHg<收缩压<140mmHg 输入小张测量血压的日期,舒张压和收缩压,存放到列表xy中 将小张血压不正常次数百分比计算并显示出来 将小张血压不正常的日期,舒张压和收缩压显示出来

xy=[]
str1=input("")
while(str1!="end"):
    xyxm=str1.split(",")
    xy.append([xyxm[0],eval(xyxm[1]),eval(xyxm[2])])
    str1=input("")
#代码开始
bzc = []
count = 0
for i in xy:
    if 60<i[1]<90 and 90<i[2]<140:
        count += 1
    else:
        bzc.append(i)

bfb = (1-count/len(xy))*100
#代码结束
print("不正常次数百分比{:.2f}".format(bfb))
for x in bzc:
    print("日期{}舒张压{}收缩压{}".format(x[0],x[1],x[2]))

2. 查找中心点

编写一个能查找中心点的小程序

输入若干个逗号分隔的各点的横纵坐标(例如2,3),直到输入end为止。 计算出各点与其余各点的距离之和,并找出中心点(即该点到其他各个点的距离之和最小的点) 显示中心点的序号、坐标和与各点的距离之和

zb=[]
z=input()
while(z!="end"):
    x,y=z.split(',')
    zb.append([eval(x),eval(y)])
    z=input()
#代码开始

lb = []
for i in range(len(zb)):
    s = 0
    for j in range(len(zb)):
        if i != j:
            s += ((zb[i][0]-zb[j][0])**2+(zb[i][1]-zb[j][1])**2)**0.5
    lb.append(s)  

i = lb.index(min(lb))
mins = min(lb)
#代码结束
print("最小值为第{}点坐标为({},{})距离之和为{:.2f}".format(i+1,zb[i][0],zb[i][1],mins))

3. 歌手评分计算

编写一个计算歌手实际得分的小程序。 十位评委对六位歌手打分,六位歌手的得分数据如fs列表所示。计算每位歌手的实际得分,即去掉一个最高分、一个最低分的平均分,按从高到低的顺序,输出前3名的名次、姓名和实际得分(保留两位小数) 格式为,第1名姓名zhang分数9.59

统计数据

通过下列函数可以对元组、列表、集合等求统计数据

sumlenmaxmin
求和求个数求最大值求最小值
排序二维列表

当二维列表s需要按指定列(第二列)的顺序排序时 s.sort(key=lambda x:x[1])

lambda是一个匿名函数,是固定写法; x表示匿名函数的输入,即列表中的一个元素,在这里,表示一个元组,x只是临时起的一个名字,你可以使用任意的名字; x[1]表示匿名函数的输出,即元组里的第二个元素

fs=[['zhang',9.5,9.8,9.7,9.6,9.5,9.9,9.6,9.2,9.3,9.7],
    ['huang',8.5,8.8,7.7,7.6,8.5,8.3,9.1,7.8,7.5,9.3],
    ['liu',9.5,8.8,7.2,9.6,8.5,6.5,6.3,7,6.9,9],
    ['chen',9.5,9.8,8.7,8.6,7.5,8.8,8.1,9.3,9.2,9.9],
    ['lin',9.9,7.8,7.5,7.2,6.5,9.1,9.2,9.3,8.5,8.2],
    ['ye',9.8,6.8,6.2,9.3,7.5,8.3,9.1,9.4,8.7,8.9]]

lbs = []
for i in fs:
    lb = []
    sum1 = 0
    max1 = 0
    min1 = 10
    lb.append(i[0])
    for j in range(1,len(i)):
        min1 = min(min1,i[j])
        max1 = max(max1,i[j])
        sum1 += i[j]
    lb.append(max1)
    lb.append(min1)
    fs = (sum1 - max1 - min1) / (len(i) - 3)
    lb.append(fs)
    lbs.append(lb)
lbs.sort(key=(lambda x:x[3]),reverse=True)   
n= 1    
for i in lbs:
    print("第{}名姓名{}分数{:.2f}".format(n,i[0],i[3]))
    n += 1
    if n > 3:
        break

4. 计算工资文件

编写一个根据《工资文件.csv》计算每位员工的工资的小程序。 工资文件.csv如下图所示,姓名,底薪,正常工时和加班工时 每位员工的工资为底薪与正常工时薪金、加班工时薪金之和。 正常工时每小时30元,加班工时每小时60元 然后将所有员工的工资按降序排列,显示姓名和工资

如何分隔字符为列表

split通过指定分隔符对字符串进行切片,形成一个列表 str.split(str="", num=string.count(str)) str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。

  1. x="12,mary,90,80,70"
  2. y=x.split(",")
  3. y
  4. ['12','mary','90','80','70']
如何排序二维列表

当二维列表按第i+1列的顺序排列

  1. lb.sort(key=lambda x:x[i],reverse)
  2. reverse默认为False 升序排列
  3. 指定reverse=True 降序排列
f1=open("sy8//工资情况.csv","r",encoding="utf-8")
jg=[]
#代码开始
for i in f1.readlines():
    i = i.strip()
    f = i.split(",")
    s = int(f[1]) + 30*int(f[2]) + 60*int(f[3])
    jg.append([f[0],s])

jg.sort(key=(lambda x:x[1]),reverse=True)
f1.close()
#代码结束
for y in jg:
    print("姓名{:8}\t工资{}".format(y[0],y[1]))

5. 列表处理

有一个3行3列的列表xlit,每个元素都为整数 编写程序,生成一个3行3列的列表ylist,若xlist的值大于其所有元素的平均值,则ylist该位置上的值为1,否则为0

xlist=[]
for i in range(3):
    xlist.append([])
    for j in range(3):
        x=eval(input(""))
        xlist[i].append(x)
#代码开始

sum1 = 0
for i in range(len(xlist)):
    for j in range(len(xlist[0])):
        sum1 += xlist[i][j]
n = int(sum1/9)
ylist = []
for i in range(3):
    ylist.append([])
    for j in range(3):
        if xlist[i][j]>=n:
            ylist[i].append(1)
        else:
            ylist[i].append(0)

#代码结束
for i in range(3):
    for j in range(3):
        print(ylist[i][j],end="")
    print()

6. 用户文件增加

pd.csv文件中每行存储逗号分隔的的用户名和密码

用户输入要增加的用户名和密码 若用户已存在,显示用户已存在 若用户不存在,将该用户名和密码追加在文件最后 并按以下格式显示所有用户名和密码 用户名mary 密码123456

f1=open("sy8\\pd.csv","r")
yhm=input("用户名")
mm=input("密码")
#代码开始
lb = []
for i in f1.readlines():
    f = i.strip()
    f = f.split(",")
    lb.append(f)

n = 0
for i in range(len(lb)):
    if lb[i][0]==yhm and lb[i][1]==mm:
        print("用户已存在")
        n = 1
        break

if n == 0:
    ls = yhm + "," + mm + "\n"
    f3 = open("sy8\\pd.csv","a+")
    f3.write(ls)
    f3.close()

f1.close()
#代码结束
f2=open("sy8\\pd.csv","r")
for line in f2:
    yh=line.strip("\n").split(",")
    print("用户名{}密码{}".format(yh[0],yh[1]))
f2.close()

7. 用户文件删除

pd文件中每行存储逗号分隔的用户名和密码

输入用户名,若用户不存在,显示该用户不存在。 若用户存在,则删除文件中该用户信息(需要重新将内容写入文件),并按下列格式显示文件信息 用户名harry 密码 888888

f1=open("sy8\\pd.csv","r")
yhm=input("用户名")
#代码开始
lb = []
for i in f1.readlines():
    i = i.strip()
    i = i.split(",")
    lb.append(i)

f1.close()
n = 0
f3 = open("sy8\\pd.csv","w")
for i in lb:
    if i[0]==yhm:
        n = 1
        lb.remove(i)
if n == 0:
    print("该用户不存在")

for i in lb:    
    f3.write(i[0]+","+i[1])
    f3.write("\n")

f3.close()
#代码结束
f2=open("sy8\\pd.csv","r")
for line in f2:
    yh=line.strip("\n").split(",")
    print("用户名{}密码{}".format(yh[0],yh[1]))
f2.close()

8. 用户文件修改密码

pd文件中每行存储逗号分隔的用户名和密码

首先用户输入用户名和密码, 若用户名或密码错误,显示用户名或密码错误。 若用户名和密码正确,输入两次新密码,若两次新密码不一致,显示两次密码不一致。若两次密码一致,可将pd文件中相应的密码修改。

f1=open("sy8\\pd.csv","r")
yhm=input("用户名")
mm=input("密码")
#代码开始
lines = f1.readlines()
n = 0
for i in lines:
    yh = i.strip().split(",")
    if (yh[0]==yhm and yh[1]!=mm) or (yh[0]!=yhm and yh[1]==mm):
        print("用户名或密码错误")
        break
    elif yh[0]==yhm and yh[1]==mm:
        n1 = input("新密码")
        n2 = input("新密码")
        if n1 != n2:
            print("两次密码不一致")
        else:
            n = 1
f1.close()
if n == 1:
    f3 = open("sy8\\pd.csv","w")
    for i in lines:
        if mm in i:
            i = i.replace(mm,n1)
        f3.write(i)
    f3.close()
#代码结束
f2=open("sy8\\pd.csv","r")
for line in f2:
    yh=line.strip("\n").split(",")
    print("用户名{}密码{}".format(yh[0],yh[1]))
f2.close()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OneFlow深度学习简介

介绍 OneFlow是一个基于深度学习的开源框架,主要面向机器学习工程师和研究人员。它提供了类似于其他深度学习框架(如TensorFlow和PyTorch)的API,同时具有高性能和高效的特点。OneFlow专注于在大规模数据集和分布式环境下的训练和推理,以及在生产环境中的部署和优化。其设计…

基于Java+SpringBoot+vue+node.js的图书购物商城系统详细设计和实现

基于JavaSpringBootvuenode.js的图书购物商城系统详细设计和实现 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各…

GD32F3系列单片机环境搭建STM32CubeMX版

GD32单片机介绍 使用到开发板 GD32F303C-START 芯片型号&#xff1a;GD32F303CGT6 PinToPin单片机型号&#xff1a;STM32F103 GD32F303CGT6是超低开发预算需求并持续释放Cortex-M4高性能内核的卓越动力&#xff0c;为取代及提升传统的8位和16位产品解决方案&#xff0c;直接进…

ppt里的音乐哪里来的?

心血来潮&#xff0c;想照着大神的模板套一个类似于快闪的ppt。 ppt里是有一段音乐的&#xff0c;那段音乐就是从幻灯片第二页开始响起的。 但是我就找不到音乐在哪。 甚至我把ppt里的所有素材都删除了&#xff0c;再看动画窗格&#xff0c;仍然是空无一物&#xff0c;显然&…

解析OceanBase v4.2 Oracle 语法兼容之 LOCK TABLE

背景 在OceanBase V4.1及之前的版本中&#xff0c;尽管已经为Oracle租户兼容了LOCK TABLE相关的语法&#xff0c;包括单表锁定操作&#xff0c;和WAIT N&#xff0c; NOWAIT 关键字。但使用时还存在一些限制。例如&#xff1a;LOCK TABLE只能针对单表进行锁定&#xff0c;并不…

OpenCV-AMF算法(自适应中值滤波Adaptive Median Filtering)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 实现原理 AMF&#xff08;Adaptive Median Filter&#xff0c;自适应中值滤波&#xff09;是一种用于图像处理和信号处理的滤波算…

腾讯云轻量应用服务器端口开启教程

腾讯云轻量应用服务器端口怎么打开&#xff1f;在轻量应用服务器控制台的防火墙中开启端口&#xff0c;本文腾讯云百科txybk.com以80端口为例&#xff0c;来详细说下轻量应用服务器端口打开教程&#xff0c;另外可以在腾讯云百科 txy.wiki 查看当前轻量服务器最新的优惠券和配置…

Angular学习第四天--问题记录及父子组件问题

问题一、 拉取完项目&#xff0c;使用npm install命令的时候遇到的。 解决办法&#xff1a; 在查找网上五花八门的解决方案之后&#xff0c;发现都不能解决。 我的解决办法是&#xff1a; 1. 把package-lock.json给删掉&#xff1b; 2. 把package.json中公司自己库的包给删除掉…

112 arcpy 发布 mxd地图文件 到 arcgis服务器 为 地图服务

前言 此文档主要是记录一下 最近的一次机遇 arcpy 来发布 地图文件到 arcgis服务器 上面 arcpy 主要是来自于 ArcGIS_Desktop_105_154030.zip 安装之后会在 python 的安装目录 安装另外的一份带 arcgis 的 python 环境, 然后 本文相关类库 也是基于 这个 arcpy 的 python 环境…

node.js服务器静态资源处理

前言&#xff1a;node.js服务器动态资源处理见 http://t.csdnimg.cn/9D8WN 一、什么是node.js服务器静态资源&#xff1f; 静态资源服务器指的是不会被服务器的动态运行所改变或者生成的文件. 它最初在服务器运行之前是什么样子, 到服务器结束运行时, 它还是那个样子. 比如平…

Mockito单元测试

文章目录 Mockito单元测试 为什么要使用Mock?导入依赖import导入包使用Mock模拟测试某个类中的某个方法是否可以成功执行使用Mock模拟某个类的方法&#xff0c;自己给这个方法返回我们指定的值使用Mock模拟某个方法调用后会抛出指定的异常使用Mock模拟测试某个类中的某个方法(…

语音智能客服机器人有什么优势?ai机器人部署

人工智能技术的进步&#xff0c;在不断的革新我们的工作和生活&#xff0c;同时&#xff0c;拥有人工智能技术的语音智能客服机器人在销售行业的工作熟悉程度也越来越好&#xff0c;那语音智能客服机器人有什么优势&#xff1f;我们一起来看看。 1、ASR语音文本转换 客户可通过…

微服务之分布式链路追踪

一、概述 1.1背景 在微服务框架中&#xff0c;一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果&#xff0c;每一个前段请求都会形成一条复杂的分布式服务调用链路&#xff0c;链路中的任何一环出现高延时或错误都会引起整个请求最…

k8s高可用集群部署介绍 -- 理论

部署官网参考文档 负载均衡参考 官网两种部署模式拓扑图和介绍 介绍两种高可用模式 堆叠 拓扑图如下&#xff08;图片来自k8s官网&#xff09;&#xff1a; 特点&#xff1a;将etcd数据库作为控制平台的一员&#xff0c;由于etcd的共识算法&#xff0c;所以集群最少为3个&…

【算法】快速排序的基本思想、优化 | 挖坑填补法和区间分割法

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法分析与设计知识专栏&#xff1a;算法分析&#x1f525; 给大家跳…

Spire.PDF for .NET【文档操作】演示:合并 PDF 文档

需要合并 PDF 的原因有很多。例如&#xff0c;合并 PDF 文件允许您打印单个文件&#xff0c;而不是为打印机排队多个文档&#xff0c;组合相关文件通过减少要搜索和组织的文件数量来简化管理和存储多个文档的过程。在本文中&#xff0c;您将学习如何使用Spire.PDF for .NET将多…

STM32移植嵌入式开源按键框架

目录 STM32移植嵌入式开源按键框架 MultiButton简介 multi_button.c文件 multi_button.h文件 按键事件 案例使用方法 学习剖析 STM32移植嵌入式开源按键框架 今天移植了一款嵌入式按键框架工程MultiButton&#xff0c;MultiButton是一个小巧简单易用的事件驱动型按键驱动…

OSCP靶场--Wombo

OSCP靶场–Wombo 考点(redis 主从复制RCE ) 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC 192.168.153.69 -p- -Pn --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-04-13 07:33 EDT Nmap scan report for 192.168.153.69 Host is u…

代理IP服务商:选择、优势与未来趋势

目录 一、代理IP服务商的选择 二、代理IP的优势 三、代理IP的未来发展趋势 在网络爬虫、数据采集、SEO优化等网络应用中&#xff0c;代理IP扮演着不可或缺的角色。代理IP服务商则是提供这些代理IP资源的主体&#xff0c;如何选择合适的服务商&#xff0c;以及代理IP的优势和…

风速Weibull分布和光伏Beta分布的参数拟合方法(含matlab算例)

在风光场景生成、随机优化调度等研究中&#xff0c;常常假设风速服从Weibull分布&#xff0c;太阳辐照度服从Beta分布。那我们如何得到两个分布的参数呢&#xff1f;文本首先介绍了风速Weibull分布和辐照度Beta分布的基本概率模型及其性性质&#xff0c;之后以MATLAB代码为例阐…