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

news2024/11/24 3:31:26

实验九 二维列表

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()

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

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

相关文章

Vscode | Python | launch.json配置gevent多进程断点失效问题处理

Vscode | Python | launch.json配置gevent多进程断点失效问题处理 文章目录 情况描述↓↓↓解决办法直接看这里↓↓↓ 情况描述 launch.json {// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more i…

MATLAB中gurobi 运行报错与调试

问题背景如下&#xff1a;刚拿到一份MATLAB的代码&#xff0c;但是电脑第一次安装gurobi&#xff0c;在运行过程中发生了报错&#xff0c;使用断点进行调试和步进调试方法&#xff0c;最终发现&#xff0c;这个问题出在了哪一步&#xff0c;然后向了人工智能和CSDN、百度寻求答…

以时分秒为单位累计设备运行时间功能块(SMART PLC梯形图代码)

1、SMART PLC设备累计运行时间功能块 SMART PLC设备累计运行时间功能块_plc计算累计时间-CSDN博客文章浏览阅读765次。PLC FC 、FB、子程序、函数学习笔记_RXXW_Dor的博客-CSDN博客FC、 FB、 子程序&#xff0c;&#xff08;甚至包括一些指令&#xff09;这些称呼其实并没有本…

MySQL中InnoDB存储引擎详细介绍

介绍 InnoDB是一种兼顾高可靠性高和高性能的通用存储引擎&#xff0c;在MySQL5.5之后&#xff0c;InnoDB是默认的MySQL存储引擎。 特点 DML(增删改)操作遵循ACID(事务四大特性)模型&#xff0c;支持事务&#xff1b;行级锁&#xff0c;提高并发访问性能支持外链FORELGN KEY约…

Linux 认识与学习Bash——1

在Linux系统中&#xff0c;有多种命令和技巧可以帮助用户与shell交互、管理变量以及执行命令。以下是对您提供的信息的简化和概述&#xff1a; 命令查找和信息 which&#xff1a;查找系统路径中的命令位置。whereis&#xff1a;查找命令的二进制文件、源代码和手册页。type&a…

c++二分排序(向右

描述 给出有 n 个元素的由小到大的序列&#xff0c;请你编程找出某元素最后一次出现的位置。 (n<10^6 输入描述 第一行&#xff1a;一个整数&#xff0c;表示由小到大序列元素个数&#xff1b;下面 n 行&#xff0c;每行一个整数&#xff1b; 最后一行 一个整数 x&#x…

05_数组和结构体

结构体 结构体的使用(重点) 结构体值传参 传值是指将参数的值拷贝一份传递给函数&#xff0c;函数内部对该参数的修改不会影响到原来的变量 结构体地址传递 传址是指将参数的地址传递给函数&#xff0c;函数内部可以通过该地址来访问原变量&#xff0c;并对其进行修改。…

图片批量高效美化,支持图片批量旋转,360度自由旋转,让图片焕然一新!

在这个视觉为王的时代&#xff0c;图片已成为我们传达信息、展示创意的重要载体。然而&#xff0c;面对海量的图片资源&#xff0c;如何快速、高效地进行图片处理&#xff0c;让它们更好地呈现我们的想法和创意呢&#xff1f; 第一步&#xff0c;进入首助编辑高手的图片批量处…

day82 过滤器 监听器

过滤器 监听器 一 过滤器 手动在web.xml配置过滤器 url-pattern设置过滤器要保护的资源的路径 每当我打开一次index.jsp页面或者第一个jsp.jsp页面&#xff0c;都会在控制台输出&#xff1a;------------- 表示先走过一次过滤器 添加注解的方式配置过滤器 value值代表要保护…

Win11关闭Bitlocker

Win11关闭Bitlocker - 知乎 Win11默认开启 Bitlocker功能&#xff0c;如果想关闭&#xff0c;可参照以下步骤&#xff1a; 1.点击开始菜单&#xff0c;选择设置 2.点击左侧“隐私和安全性”菜单&#xff0c;然后进入右侧的“设备加密”选项 3.将设备加密选项关闭即可 点击关闭…

【Linux】Linux基础与常用指令大全

文章目录 操作系统是什么&#xff1f;1. Linux家族介绍2. Linux的安装方式3. 常用指令3.1 ls [选项] [目录/文件]&#xff08;显示目录或文件信息&#xff09;3.2 pwd&#xff08;显示当前所在目录&#xff09;3.3 任意指令加上 --help&#xff08;查看指令的用法&#xff09;3…

腾讯云APP备案指南:一站式完成备案手续,助您顺利上线

工信部最新通知要求所有互联网信息服务提供者完成移动互联网应用程序备案手续。腾讯云为开发者提供了简单易行的备案流程&#xff0c;本文详细解答如何在腾讯云平台完成备案&#xff0c;帮助开发者快速上线自己的APP。从验证备案域名到腾讯云审核&#xff0c;一步步指导您完成备…

视频素材库在哪里找免费?几个短视频素材大全告诉您

在这个视觉传达愈发重要的数字时代&#xff0c;拥有一库多样而高质量的视频素材是每位创作者的必备武器。从广告制作到社交媒体分享&#xff0c;优质的视频素材不仅能够增强视觉效果&#xff0c;还能显著提升受众的参与度。以下是一系列精选的全球视频素材网站&#xff0c;旨在…

3W 1.5KVDC 隔离单输出 DC/DC 电源模块 ——TPL-3W 系列

TPL-3W系列是一款额定功率为3W的隔离产品&#xff0c;国际标准引脚&#xff0c;宽范围工作温度–40℃ 到 105℃&#xff0c;在此温度范围内都可以稳定输出3W&#xff0c;并且效率非常高&#xff0c;高达88%&#xff0c;同时负载调整率非常低&#xff0c;对于有输出电压精度有要…

汇编语言——将DX,AX组成的32位数循环左/右移3位

文章目录 将DX&#xff0c;AX组成的32位数循环左移3位将DX&#xff0c;AX组成的32位数循环右移3位 将DX&#xff0c;AX组成的32位数循环左移3位 data segment data ends stack segment stacktop label worddw 100 dup (?) stack ends code segmentassume cs:code,ds:data,ss:s…

web前端网络相关知识

一、OSI 7层参考模型 1.物理层&#xff08;光纤、电缆等物理介质&#xff09; 传播比特流&#xff08;bit&#xff09; 01010101的形式 2.数据链路层&#xff08;交换机&#xff0c;mac地址&#xff09; 将比特流组合成字节&#xff0c;组合成帧&#xff0c;用mac地址访问&…

Opentelemetry——分析C++项目链接时循环依赖导致的错误

大纲 环境分析过程函数是否真的未定义是否有完整实现被谁编译代码是否被编译到静态库 链接出现了什么问题原因猜想 解决方案参考资料 在《Opentelemetry-Language APIs & SDKs-CGetting Started》一文中&#xff0c;介绍了如果编译一个可以发出Trace遥测数据的C项目。虽然过…

制作直通网线和交叉网线

制作直通网线和交叉网线 1. 网络直通线2. 网络交叉线References 双绞线的连接方法有两种&#xff1a;直通连接和交叉连接 。 直通连接是将双绞线的两端分别都依次按白橙、橙、白绿、蓝、白蓝、绿、白棕、棕色的顺序 (国际 EIA/TIA 568B 标准) 压入 RJ45 水晶头内。这种方法制作…

SpringMVC(二)【请求与响应】

0、测试环境 我们简化开发&#xff0c;创建一个简单的环境&#xff08;因为没有其它包比如 service、dao&#xff0c;所以这里不用 Spring 容器&#xff0c;只用 SpringMVC 容器&#xff09;&#xff1a; Servelet 容器配置&#xff1a; package com.lyh.config;import org.s…

物理学视角讲解diffusion生成模型——混合高斯扩散模型

学习评分函数 想要通过逆向扩散从某个目标分布中抽样——其功能形式未知&#xff0c;我们只能通过抽样来学习——但这需要我们知道对应于目标分布的评分函数。知道评分函数&#xff0c;即这个分布对数的梯度&#xff0c;似乎等同于知道分布本身。我们如何学习评分函数呢&#…