头歌实践平台(Educoder):python练习九 二维列表

文章描述了多个编程挑战,包括订单列表的金额计算与排序,固定资产折旧的计算方法,股票信息的处理,以及二维列表在成绩计算、选择题和简答题判断中的应用,以及求解峰值和谷值问题。
摘要由CSDN通过智能技术生成

 第1关 订单列表计算排序

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 order in dd:
    order.append(order[2] * order[3])

# 将订单按金额降序排列
dd.sort(key=lambda x: x[-1], reverse=True)

# 将订单金额最高的三个订单显示出来
top_3_orders = dd[:3]

# 输出结果
for order in top_3_orders:
    print(f"订单号{order[0]}金额{order[-1]}")
#代码借书

第2关 固定资产折旧计算

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

第3关 股票信息二维列表

f1=open("step4//股票信息.csv","r",encoding="utf8")
gpxx=[]
#代码开始
for line in f1:
    # 忽略标题行,只处理数据行
    if '股票代码' in line:
        continue
    # 分割每行的数据
    parts = line.strip().split(',')
    # 提取股票名称、价格和涨跌幅
    name = parts[1]  # 股票名称
    price = float(parts[2])  # 股票价格
    change_percent = float(parts[3])  # 涨跌幅
    # 计算涨跌金额
    change_amount = round(price * change_percent / 100, 2)
    # 添加到股票信息列表
    gpxx.append([name, change_amount])
# 根据涨跌金额进行降序排序
gpxx.sort(key=lambda x: x[1], reverse=True)

#代码结束
for i in range(10):
    print("股票名称{}涨跌金额{:.2f}".format(gpxx[i][0],gpxx[i][1]))
f1.close()

第4关 三国演义章节列表

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

第5关 学生成绩计算

import csv
f1=open("step6/学生成绩.csv")
xslb=[]
#代码开始
reader = csv.reader(f1)
next(reader)  # 跳过标题行
for row in reader:
    name = row[0]  # 学生姓名
    usual_score = float(row[1])  # 平时成绩
    final_score = float(row[2])  # 期末成绩
    total_score = usual_score * 0.4 + final_score * 0.6  # 计算期评成绩
    xslb.append([name, total_score])
# 根据期评成绩降序排序
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关 选择题判断

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

第7关 简答题判断

f1=open("step8/简答题.txt",encoding="utf8")
zlb=[]
for line in f1:
    tm=line.strip().split(",")
    zlb.append(tm)
#代码开始
# 获取用户输入的题号
question_number = int(input("请输入题号")) - 1  #用户输入的题号通常是从1开始的,而列表索引是从0开始的,所以要减1
# 显示题面
question = zlb[question_number]
print(question[0])  # 题面

# 获取用户输入的答案
user_answer = input("").strip()

# 判断答案是否正确
if question[1].strip() in user_answer:  # 检查正确答案是否包含在用户的答案中
    print("答案正确")
else:
    print("答案错误,正确答案是{}".format(question[1]))
#代码结束

第8关 二维矩阵求峰值

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)
# 代码开始
def is_peak(matrix, i, j):
    if i > 0 and matrix[i][j] < matrix[i-1][j]:
        return False
    if i < m-1 and matrix[i][j] < matrix[i+1][j]:
        return False
    if j > 0 and matrix[i][j] < matrix[i][j-1]:
        return False
    if j < n-1 and matrix[i][j] < matrix[i][j+1]:
        return False
    return True
for i in range(m):
    for j in range(n):
        if is_peak(lb, i, j):
            lb2.append(lb[i][j])
# 代码结束
print(lb2)

第9关 二维矩阵求谷值

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)

# 代码开始
def is_valley(matrix, i, j):
    if i > 0 and matrix[i][j] > matrix[i-1][j]:
        return False
    if i < m-1 and matrix[i][j] > matrix[i+1][j]:
        return False
    if j > 0 and matrix[i][j] > matrix[i][j-1]:
        return False
    if j < n-1 and matrix[i][j] > matrix[i][j+1]:
        return False
    return True

for i in range(m):
    for j in range(n):
        if is_valley(lb, i, j):
            lb2.append(lb[i][j])
# 代码结束

print(lb2)

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值