当前位置:   article > 正文

头歌实践平台(Educoder):python练习九 二维列表_学习-python列表之列表应用之降序排序 头歌

学习-python列表之列表应用之降序排序 头歌

 第1关 订单列表计算排序

  1. dd=[["1001","练习本",5,10],["1002","水彩笔",35,3],["1003","三角板",20,5],
  2. ["1004","练习本",5,2],["1005","三角板",20,3],["1006","圆珠笔",5,10],
  3. ["1007","水彩笔",35,2],["1008","圆珠笔",5,1]]
  4. #代码开始
  5. # 计算每个订单的金额(单价*数量),加入到每个订单的最后
  6. for order in dd:
  7. order.append(order[2] * order[3])
  8. # 将订单按金额降序排列
  9. dd.sort(key=lambda x: x[-1], reverse=True)
  10. # 将订单金额最高的三个订单显示出来
  11. top_3_orders = dd[:3]
  12. # 输出结果
  13. for order in top_3_orders:
  14. print(f"订单号{order[0]}金额{order[-1]}")
  15. #代码借书

第2关 固定资产折旧计算

  1. yj=eval(input('输入原价'))
  2. cz=eval(input('输入预计净残值'))
  3. nx=eval(input('输入年限'))
  4. zjxx=[]
  5. sum=0
  6. #代码开始
  7. for i in range(1, nx+1):
  8. n = nx * (nx + 1) / 2 # 预计使用寿命的年数总和
  9. zj = yj - cz # 原价减去预计净残值
  10. nzzj = zj * (nx - i + 1) / n # 年折旧率
  11. sum += nzzj
  12. z = yj - sum
  13. zjxx.append([i, nzzj, z])
  14. #代码结束
  15. sum=z=0
  16. for x in zjxx:
  17. print("第{}年折旧{:.2f}剩余价值{:.2f}".format(x[0],x[1],x[2]))

第3关 股票信息二维列表

  1. f1=open("step4//股票信息.csv","r",encoding="utf8")
  2. gpxx=[]
  3. #代码开始
  4. for line in f1:
  5. # 忽略标题行,只处理数据行
  6. if '股票代码' in line:
  7. continue
  8. # 分割每行的数据
  9. parts = line.strip().split(',')
  10. # 提取股票名称、价格和涨跌幅
  11. name = parts[1] # 股票名称
  12. price = float(parts[2]) # 股票价格
  13. change_percent = float(parts[3]) # 涨跌幅
  14. # 计算涨跌金额
  15. change_amount = round(price * change_percent / 100, 2)
  16. # 添加到股票信息列表
  17. gpxx.append([name, change_amount])
  18. # 根据涨跌金额进行降序排序
  19. gpxx.sort(key=lambda x: x[1], reverse=True)
  20. #代码结束
  21. for i in range(10):
  22. print("股票名称{}涨跌金额{:.2f}".format(gpxx[i][0],gpxx[i][1]))
  23. f1.close()

第4关 三国演义章节列表

  1. f1=open("step5/三国演义.txt","r",encoding="utf8")
  2. zjlb=[]
  3. #代码开始
  4. for line in f1:
  5. # 检查是否是章节的标题行
  6. if line.startswith("正文 "):
  7. parts = line.strip()[3:].split(" ")
  8. if len(parts) >= 3:
  9. chapter_number = parts[0]
  10. upper_half = parts[1]
  11. lower_half = parts[2]
  12. zjlb.append([chapter_number, upper_half, lower_half])
  13. #代码结束
  14. f1.close()
  15. n=eval(input())
  16. for i in range(n):
  17. x=zjlb[i]
  18. print(x)

第5关 学生成绩计算

  1. import csv
  2. f1=open("step6/学生成绩.csv")
  3. xslb=[]
  4. #代码开始
  5. reader = csv.reader(f1)
  6. next(reader) # 跳过标题行
  7. for row in reader:
  8. name = row[0] # 学生姓名
  9. usual_score = float(row[1]) # 平时成绩
  10. final_score = float(row[2]) # 期末成绩
  11. total_score = usual_score * 0.4 + final_score * 0.6 # 计算期评成绩
  12. xslb.append([name, total_score])
  13. # 根据期评成绩降序排序
  14. xslb.sort(key=lambda x: x[1], reverse=True)
  15. #代码结束
  16. n=eval(input())
  17. for i in range(n):
  18. print("第{}名姓名{}成绩{:.2f}".format(i+1,xslb[i][0],xslb[i][1]))

第6关 选择题判断

  1. f1=open("step7/选择题.txt",encoding="utf8")
  2. zlb=[]
  3. for line in f1:
  4. tm=line.strip().split(",")
  5. zlb.append(tm)
  6. #代码开始
  7. # 获取用户输入的题号
  8. question_number = int(input("请输入题号")) - 1 #用户输入的题号通常是从1开始的,而列表索引是从0开始的,所以要减1
  9. # 显示题目和选项
  10. question = zlb[question_number]
  11. print(question[0]) # 题面
  12. print("A", question[1], sep="") # 选项A
  13. print("B", question[2], sep="") # 选项B
  14. print("C", question[3], sep="") # 选项C
  15. print("D", question[4], sep="") # 选项D
  16. # 获取用户输入的答案
  17. user_answer=input("").strip().upper() # 将用户输入的答案转换为大写,并去除可能的空格
  18. # 判断答案是否正确
  19. if user_answer == question[5].strip(): # 去除正确答案中可能的空格
  20. print("答案正确")
  21. else:
  22. print("答案错误,正确答案是{}".format(question[5]))
  23. #代码结束

第7关 简答题判断

  1. f1=open("step8/简答题.txt",encoding="utf8")
  2. zlb=[]
  3. for line in f1:
  4. tm=line.strip().split(",")
  5. zlb.append(tm)
  6. #代码开始
  7. # 获取用户输入的题号
  8. question_number = int(input("请输入题号")) - 1 #用户输入的题号通常是从1开始的,而列表索引是从0开始的,所以要减1
  9. # 显示题面
  10. question = zlb[question_number]
  11. print(question[0]) # 题面
  12. # 获取用户输入的答案
  13. user_answer = input("").strip()
  14. # 判断答案是否正确
  15. if question[1].strip() in user_answer: # 检查正确答案是否包含在用户的答案中
  16. print("答案正确")
  17. else:
  18. print("答案错误,正确答案是{}".format(question[1]))
  19. #代码结束

第8关 二维矩阵求峰值

  1. m = eval(input("行"))
  2. n = eval(input("列"))
  3. lb = []
  4. lb2 = []
  5. for i in range(m):
  6. x = []
  7. for j in range(n):
  8. y = eval(input())
  9. x.append(y)
  10. lb.append(x)
  11. # 代码开始
  12. def is_peak(matrix, i, j):
  13. if i > 0 and matrix[i][j] < matrix[i-1][j]:
  14. return False
  15. if i < m-1 and matrix[i][j] < matrix[i+1][j]:
  16. return False
  17. if j > 0 and matrix[i][j] < matrix[i][j-1]:
  18. return False
  19. if j < n-1 and matrix[i][j] < matrix[i][j+1]:
  20. return False
  21. return True
  22. for i in range(m):
  23. for j in range(n):
  24. if is_peak(lb, i, j):
  25. lb2.append(lb[i][j])
  26. # 代码结束
  27. print(lb2)

第9关 二维矩阵求谷值

  1. m = eval(input("行"))
  2. n = eval(input("列"))
  3. lb = []
  4. lb2 = []
  5. for i in range(m):
  6. x = []
  7. for j in range(n):
  8. y = eval(input())
  9. x.append(y)
  10. lb.append(x)
  11. # 代码开始
  12. def is_valley(matrix, i, j):
  13. if i > 0 and matrix[i][j] > matrix[i-1][j]:
  14. return False
  15. if i < m-1 and matrix[i][j] > matrix[i+1][j]:
  16. return False
  17. if j > 0 and matrix[i][j] > matrix[i][j-1]:
  18. return False
  19. if j < n-1 and matrix[i][j] > matrix[i][j+1]:
  20. return False
  21. return True
  22. for i in range(m):
  23. for j in range(n):
  24. if is_valley(lb, i, j):
  25. lb2.append(lb[i][j])
  26. # 代码结束
  27. print(lb2)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/561531
推荐阅读
相关标签
  

闽ICP备14008679号