NHU-Python(商)实验九-二维列表(计算与人工智能概论)

任务描述

血压的正常范围是 60mmHg<舒张压<90mmHg 90mmHg<收缩压<140mmHg 输入小张测量血压的日期,舒张压和收缩压,存放到列表xy中 将小张血压不正常次数百分比计算并显示出来 将小张血压不正常的日期,舒张压和收缩压显示出来 例如输入 2020-1-1,80,100 2020-1-2,90,120 2020-1-3,100,150 2020-1-4,90,120 2020-1-5,60,120 2020-1-6,90,140 2020-1-10,80,100 2020-1-11,70,100 2020-1-12,90,120 end 显示 不正常次数百分比66.67 日期2020-1-2舒张压90收缩压120 日期2020-1-3舒张压100收缩压150 日期2020-1-4舒张压90收缩压120 日期2020-1-5舒张压60收缩压120 日期2020-1-6舒张压90收缩压140 日期2020-1-12舒张压90收缩压120

开始你的任务吧,祝你成功!

xy=[]
str1=input("")
while(str1!="end"):
    xyxm=str1.split(",")
    xy.append([xyxm[0],eval(xyxm[1]),eval(xyxm[2])])
    str1=input("")
#代码开始
s=0
bzc=[]
for n in range(len(xy)):
    if xy[n][1]>=90 or xy[n][1]<=60 or xy[n][2]>=140 or xy[n][2]<=90:
        s+=1
        bzc.append(xy[n])
    
bfb=s/len(xy)*100
#代码结束
print("不正常次数百分比{:.2f}".format(bfb))
for x in bzc:
    print("日期{}舒张压{}收缩压{}".format(x[0],x[1],x[2]))

任务描述

本关任务:编写一个能查找中心点的小程序

编程要求

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

测试说明

平台会对你编写的代码进行测试: 测试输入:`

  1. 1,1
  2. 2,3
  3. 4,5
  4. 7,8
  5. 10,12
  6. 20,50

预期输出: 最小值为第3点坐标为(4,5)距离之和为69.05

测试输入:

  1. 3,3
  2. 3,4
  3. 5,9
  4. 11,12
  5. 23,3
  6. 45,6
  7. 7,74
  8. 68,10
  9. 11,12
  10. 20,9
  11. end

预期输出: 最小值为第4点坐标为(11,12)距离之和为208.24

相关资料 教学课件 相关视频 更多实训

开始你的任务吧,祝你成功!

zb=[]
z=input()
jl=[]
while(z!="end"):
    x,y=z.split(',')
    zb.append([eval(x),eval(y)])
    z=input()
#代码开始
s=0
mgjl=0
zjl=0
for a in range(len(zb)):
    s=0
    mgjl=0
    zjl=0
    while s<=len(zb)-1:
        mgjl=((zb[a][0]-zb[s][0])**2+(zb[a][1]-zb[s][1])**2)**0.5
        zjl+=mgjl
        s+=1
    jl.append(zjl)
zxz=min(jl)
i=jl.index(zxz)
#代码结束
print("最小值为第{}点坐标为({},{})距离之和为{:.2f}".format(i+1,zb[i][0],zb[i][1],zxz))

任务描述

本关任务:编写一个计算歌手实际得分的小程序。 十位评委对六位歌手打分,六位歌手的得分数据如fs列表所示

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

计算每位歌手的实际得分,即去掉一个最高分、一个最低分的平均分,按从高到低的顺序,输出前3名的名次、姓名和实际得分(保留两位小数) 格式为,第1名姓名zhang分数9.59

相关知识

为了完成本关任务,你需要掌握:1.列表的函数,2.如何排序二维列表。

统计数据

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

sum 求和 len 求个数 max 求最大值 min 求最小值

排序二维列表

当二维列表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]]

for i in range(len(fs)):
    zdz=0
    zxz=10
    zf=0
    pjf=0
    for j in range(1,11):
        if fs[i][j]>=zdz:
            zdz=fs[i][j]
        if fs[i][j]<=zxz:
            zxz=fs[i][j]
        zf+=fs[i][j]
    dxh=fs[i].index(zdz)
    xxh=fs[i].index(zxz)
    fs[i].pop(dxh)
    fs[i].pop(xxh)
    zf=zf-zdz-zxz
    pjf=zf/8
    fs[i].append(pjf)
fs.sort(key=lambda x:x[9],reverse=True)

for l in range(3):
    print("第{}名姓名{}分数{:.2f}".format(l+1,fs[l][0],fs[l][9]))

任务描述

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

工资情况图片

相关知识

为了完成本关任务,你需要掌握:1.split分隔字符为列表 2.如何排序二维列表

如何分隔字符为列表

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=[]
#代码开始
f1.seek(0)
for line in f1:
    b=line.strip().split(",")
    
    xj=eval(b[1])+eval(b[2])*30+eval(b[3])*60
    jg.append([b[0],xj,eval(b[1]),eval(b[2]),eval(b[3])])
jg.sort(key=lambda x:x[1],reverse=True)


#代码结束
for y in jg:
    print("姓名{:8}\t工资{}".format(y[0],y[1]))

任务描述

本关任务: 有一个3行3列的列表xlit,每个元素都为整数 编写程序,生成一个3行3列的列表ylist,若xlist的值大于其所有元素的平均值,则ylist该位置上的值为1,否则为0 例如 xlist为 8 8 8 72 73 15 90 71 1 则ylist为 0 0 0 1 1 0 1 1 0

相关资料 教学课件 相关视频 更多实训

开始你的任务吧,祝你成功!

xlist=[]
for i in range(3):
    xlist.append([])
    for j in range(3):
        x=eval(input(""))
        xlist[i].append(x)
#代码开始
s=0
for i in range(3):
    s+=xlist[i][0]+xlist[i][0]+xlist[i][0]
ave=s/9
ylist=[]
for i in range(3):
    a=0
    b=0
    c=0
    if xlist[i][0]>=ave:
        a=1
    if xlist[i][1]>=ave:
        b=1
    if xlist[i][2]>=ave:
        c=1
    ylist.append([a,b,c])

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

任务描述

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

pd文件

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

相关资料 教学课件 相关视频 更多实训

开始你的任务吧,祝你成功!

f1=open("sy8\\pd.csv","r")
yhm=input("用户名")
mm=input("密码")
#代码开始
lb=[]
f1.seek(0)
for line in f1:
    a=line.strip().split(",")
    lb.append([a[0],a[1]])
flag=0
libsub=[yhm,mm]
for n in range(len(lb)):
    if libsub==lb[n]:
        print("用户已存在")
        flag=1
if flag==0:
    lb.append(libsub)
with open("sy8\\pd.csv", "w+", encoding="utf-8") as fw:
    for row in lb:
        fw.write(",".join(row)+"\n")



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

任务描述

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

pd文件

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

相关资料 教学课件 相关视频 更多实训

开始你的任务吧,祝你成功!

f1=open("sy8\\pd.csv","r")
yhm=input("用户名")
#代码开始
lb=[]
f1.seek(0)
for line in f1:
    a=line.strip().split(",")
    lb.append([a[0],a[1]])
flag=-1

for n in range(len(lb)):
    if yhm==lb[n][0]:
        flag=n
if flag==-1:
    print("该用户不存在")
else:
    lb.pop(flag)

with open("sy8\\pd.csv", "w+", encoding="utf-8") as fw:
    for row in lb:
        fw.write(",".join(row)+"\n")

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

任务描述

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

pd文件

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

相关资料 教学课件 相关视频 更多实训

开始你的任务吧,祝你成功!

f1=open("sy8\\pd.csv","r")
yhm=input("用户名")
#代码开始
lb=[]
f1.seek(0)
for line in f1:
    a=line.strip().split(",")
    lb.append([a[0],a[1]])
flag=-1

for n in range(len(lb)):
    if yhm==lb[n][0]:
        flag=n
if flag==-1:
    print("该用户不存在")
else:
    lb.pop(flag)

with open("sy8\\pd.csv", "w+", encoding="utf-8") as fw:
    for row in lb:
        fw.write(",".join(row)+"\n")




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

任务描述

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

pd文件

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

相关资料 教学课件 相关视频 更多实训

开始你的任务吧,祝你成功!

f1=open("sy8\\pd.csv","r")
yhm=input("用户名")
mm=input("密码")
#代码开始
lb=[]
lbsub=[yhm,mm]
f1.seek(0)
for line in f1:
    a=line.strip().split(",")
    lb.append([a[0],a[1]])
flag=-1
for n in range(len(lb)):
    if yhm==lb[n][0] and mm==lb[n][1] :
        flag=n
        mm1=input("新密码")
        mm2=input("新密码")
        if mm1!=mm2:
            print("两次密码不一致")
            flag==-2
        else:
            lb[n][1]=mm1
            flag==-2

if flag==-1:
    print("用户名或密码错误")

with open("sy8\\pd.csv", "w+", encoding="utf-8") as fw:
    for row in lb:
        fw.write(",".join(row)+"\n")
#代码结束
f2=open("sy8\\pd.csv","r")
for line in f2:
    yh=line.strip("\n").split(",")
    print("用户名{}密码{}".format(yh[0],yh[1]))
f2.close()

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年12月12日
下一篇 2023年12月12日

相关推荐