练习九 二维列表
1. 订单列表计算排序
订单列表dd如代码所示,存储订单号、商品名称,单价和数量 计算每个订单的金额(单价*数量)
,加入到每个订单的最后 将订单按金额降序排列 将订单金额最高的三个订单显示出来 订单号1002金额105 订单号1003金额100 订单号1007金额70
dd=[["1001","练习本",5,10],["1002","水彩笔",35,3],["1003","三角板",20,5],
["1004","练习本",5,2],["1005","三角板",20,3],["1006","圆珠笔",5,10],
["1007","水彩笔",35,2],["1008","圆珠笔",5,1]]
#代码开始
for i in dd:
i.append(i[2]*i[3])
dd.sort(key=lambda x:x[4],reverse=True)
n = 1
for i in dd:
print("订单号{}金额{}".format(i[0],i[4]))
n += 1
if n > 3:
break
#代码结束
2. 固定资产折旧计算
固定资产折旧指将应提折旧总额在固定资产各使用期间进行分配时所采用的具体计算方法。 年数总和法,是将固定资产的原价减去预计净残值的余额,乘以一个固定资产尚可使用的寿命为分子、以预计使用寿命逐年数字之和为分母的、逐年递减的分数,计算每年的折旧额。 计算公式: 年折旧率 = 尚可使用寿命/ 预计使用寿命的年数总和 某设备预计使用5年,则预计使用寿命的年数总和为15(5+4+3+2+1)。 第1年时尚可使用寿命为5,此年的年折旧率为5/15。 第2年时尚可使用寿命为4,此年的年折旧率为4/15。 第3年时尚可使用寿命为3,此年的年折旧率为3/15。 第4年时尚可使用寿命为2,此年的年折旧率为2/15。 第5年时尚可使用寿命为1,此年的年折旧率为1/15。 编写程序,输入原价、预计净残值和年限, 将年序号、每年的折旧额和剩余价值(原价减去累计折旧额)存入二维列表,并输出(输出程序已经写出)
yj=eval(input('输入原价'))
cz=eval(input('输入预计净残值'))
nx=eval(input('输入年限'))
zjxx=[]
#代码开始
nxzh = 0
for i in range(1,nx+1):
nxzh += i
yjs = yj
for i in range(nx):
lb = []
nzl = (nx - i) / nxzh
s = (yj-cz)*(nx-i)/nxzh
lb.append(i+1)
lb.append(s)
yjs = yjs -s
lb.append(yjs)
zjxx.append(lb)
#代码结束
s=z=0
for x in zjxx:
print("第{}年折旧{:.2f}剩余价值{:.2f}".format(x[0],x[1],x[2]))
3. 股票信息二维列表
编写一个股票信息存入二维列表并排序的程序 股票信息.csv文件中存放了股票代码、股票名称、股票价格和涨跌幅四列的信息,逗号分隔。
计算每个股票的涨跌金额为价格*涨跌百分比/100
将股票名称、涨跌金额信息存放到二维列表gpxx中 将二维列表根据涨跌金额的降序排列 显示涨跌金额最高的十个股票的名称和涨跌金额(保留两位小数) 提示:round(x,y)函数可以对x保留y位小数。
f1=open("step4//股票信息.csv","r",encoding="utf8")
gpxx=[]
#代码开始
lb = []
for i in f1.readlines():
i = i.strip().split(",")
n = round(eval(i[2])*eval(i[3])/100,2)
i.append(n)
lb.append(i)
lb.sort(key=lambda x:x[4],reverse=True)
for i in lb:
lb1 = []
lb1.append(i[1])
lb1.append(i[4])
gpxx.append(lb1)
#代码结束
for i in range(10):
print("股票名称{}涨跌金额{:.2f}".format(gpxx[i][0],gpxx[i][1]))
f1.close()
4. 三国演艺章节列表
step5文件夹下的三国演义.txt如下图所示 每章回的标题行开头为正文空格第x回空格上半句空格下半句 注意:正文后的空格是半角字符,回与上半句、下半句之间的空格是全角字符,可在此处复制(" "),也可以用"\u3000"表示
编写程序,将文件每章回的标题行存入二维列表中。第一列为第x回,第二列为上半句,第三列为下半句。如图所示。 输入数值n,将1到n回的标题行列表一一打印出来 例如,输入10
f1=open("step5/三国演义.txt","r",encoding="utf8")
zjlb=[]
#代码开始
for i in f1.readlines():
i = i.strip().split(" ")
if i[0]=="正文":
n = i[1].split("\u3000")
zjlb.append(n)
#代码结束
f1.close()
n=eval(input())
for i in range(n):
x=zjlb[i]
print(x)
5. 学生成绩计算
在学生成绩.csv文件中,记录了每位学生的姓名和平时成绩、期末成绩。
计算每位学生的期评成绩为平时成绩占40%期末成绩占60%,将姓名和期评成绩两列存入二维列表xscj,按期评成绩从高到低的顺序排列. 输入名次n,输出前n名的姓名和期评成绩,格式如下(输出的代码已给出)。
f1=open("step6/学生成绩.csv")
xslb=[]
#代码开始
for i in f1.readlines():
i = i.strip().split(",")
lb = []
lb.append(i[0])
lb.append(eval(i[1])*0.4+eval(i[2])*0.6)
xslb.append(lb)
xslb.sort(key=lambda x:x[1],reverse=True)
#代码结束
n=eval(input())
for i in range(n):
print("第{}名姓名{}成绩{:.2f}".format(i+1,xslb[i][0],xslb[i][1]))
6. 选择题判断
在选择题.txt文件中存放了10道题目的题面和ABCD四个选项及正确答案,如图所示,各项内容用逗号隔开。
给定的程序已经将文件内容读入到二维列表zlb中。 编写程序,接收用户输入的题号,按如下格式显示题面和四个选项。 再接收用户输入的答案,若答案正确,显示正确 注意:无需去掉原文本中的空格和换行符"
f1=open("step7/选择题.txt",encoding="utf8")
zlb=[]
for line in f1:
tm=line.strip().split(",")
zlb.append(tm)
#代码开始
x = eval(input("请输入题号"))
print(zlb[x-1][0])
lis = ["A","B","C","D"]
for i in range(4):
print(lis[i]+zlb[x-1][i+1])
y = input()
if y == zlb[x-1][5]:
print("答案正确")
else:
print("答案错误,正确答案是%s"%zlb[x-1][5])
#代码结束
7. 简答题判断
在简答题.txt文件中存放了10道题目的题面和正确答案,如图所示,题目和答案用逗号分隔。
给定的程序已经将文件内容读入到二维列表zlb中。 编写程序,接收用户输入的题号,显示题面。 再接收用户输入的答案,若答案正确,显示正确。 注意:只要用户输入的答案中包含正确答案即可
否则显示错误,正确答案是列表中的答案 注意:显示错误后面的逗号是汉字字符","
f1=open("step8/简答题.txt",encoding="utf8")
zlb=[]
for line in f1:
tm=line.strip().split(",")
zlb.append(tm)
#代码开始
x = eval(input("请输入题号"))
print(zlb[x-1][0])
y = input("答案")
if y == zlb[x-1][1]:
print("正确")
else:
print("错误,正确答案是%s"%zlb[x-1][1])
#代码结束
8. 二维矩阵求峰值
编程找出矩阵的峰值。 峰值是矩阵的元素,其不小于其相邻元素 如果是中间的元素,要求其大于上下左右的元素 如果是边界的元素,只要大于其相邻的元素 例如数组 23 45 78 44 68 67 11 33 54 峰值是 78 68 建立一个m行n列的数组(源程序已实现,存放在列表lb中), 编程找出其中的峰值,放在列表lb2中
m=eval(input("行"))
n=eval(input("列"))
lb=[]
lb2=[]
for i in range(m):
x=[]
for j in range(n):
y=eval(input())
x.append(y)
lb.append(x)
#代码开始
for i in range(m):
for j in range(n):
if i>=0 and lb[i][j] > lb[i-1][j] or i==0: #上
if j>=0 and lb[i][j] > lb[i][j-1]or j==0: #左
if i<m-1 and lb[i][j] > lb[i+1][j] or i==m-1: #下
if j<n-1 and lb[i][j] > lb[i][j+1] or j==n-1: #右
lb2.append(lb[i][j])
lb2.sort()
#代码结束
print(lb2)
9. 二维矩阵求谷值
编程将二维数组的谷值存入列表。 谷值是二维数组中的元素,其不大于其4个相邻元素(上,下,左,右) 例如数组 23 45 78 44 13 74 11 33 54 谷值是 23 13 11 建立一个m行n列的数组(源程序已实现) 编程找出其中的谷值,放在列表lb2中
m=eval(input("行"))
n=eval(input("列"))
lb=[]
lb2=[]
for i in range(m):
x=[]
for j in range(n):
y=eval(input())
x.append(y)
lb.append(x)
#代码开始
for i in range(m):
for j in range(n):
if i>0 and lb[i][j] < lb[i-1][j] or i==0:
if j>0 and lb[i][j] < lb[i][j-1] or j==0:
if i<m-1 and lb[i][j] < lb[i+1][j] or i==m-1:
if j<n-1 and lb[i][j] < lb[i][j+1] or j==n-1:
lb2.append(lb[i][j])
#代码结束
print(lb2)