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