Python程序设计 二维列表

news2024/11/17 23:56:26

教学案例九 二维列表

1. 成绩文件的读取

score.csv文件中记录了多门同学的编号、姓名和三门功课的成绩(逗号键分隔) 格式如下

编写程序,将文件score.csv文件中的数据放入二维列表cjlb中(注意:语文、数学、英语成绩要转换为数值类型)

f1=open("lbks//score.csv")
cjlb=[]
#代码开始

for i in f1.readlines():
    s = []
    i = i.strip()
    for j in i.split(","):
        s.append(j)
    cjlb.append(s)

#代码结束
for lb in cjlb:
    print("学号{}姓名{}语文{}数学{}英语{}".format(lb[0],lb[1],lb[2],lb[3],lb[4]))

2. 成绩文件的查询 

score.csv文件中记录了多门同学的编号、姓名和三门功课的成绩(逗号键分隔) 格式如下

已将文件中的数据读入到二维列表cjlb中,补充程序,实现成绩查询的功能: 输入编号,在列表cjlb中查找并显示该生的姓名和成绩. 若不存在该编号,显示查无此人。 例如 输入101 显示姓名Mary语文88数学85英语90 输入999 显示查无此人

f1=open("lbks//score.csv")
cjlb=[]
for line in f1:
    lb=line.strip().split(",")
    cjlb.append([lb[0],lb[1],eval(lb[2]),eval(lb[3]),eval(lb[4])])
#代码开始

n = input("输入编号")
s = 0
for i in cjlb:
    if i[0] == n:
        s = 1
        print(f"姓名{i[1]}语文{i[2]}数学{i[3]}英语{i[4]}")

if s == 0:
    print("查无此人")

#代码结束

3. 成绩文件的新增

score.csv文件中记录了多门同学的编号、姓名和三门功课的成绩(逗号键分隔) 格式如下

已将文件中的数据读入到二维列表cjlb中,补充程序,实现成绩新增的功能: 输入编号,若该编号在列表中已存在,显示编号已存在 若不存在该编号,再输入新增的姓名和三门功课的成绩。 若成绩是数值且在0到100之间,将该信息追加在列表中 若成绩不是数值,或不在0到100之间,显示成绩错误

f1=open("lbks//score.csv")
cjlb=[]
for line in f1:
    lb=line.strip().split(",")
    cjlb.append([lb[0],lb[1],eval(lb[2]),eval(lb[3]),eval(lb[4])])
#代码开始
bh = input("输入编号")
n = 0
for i in cjlb:
    if i[0] == bh:
        n = 1
        print("编号已存在")
        break
if n == 0:
    s = []
    xm = input("姓名")
    yw = eval(input("语文"))
    sx = eval(input("数学"))
    yy = eval(input("英语"))
    if 0<=yw<=100 and 0<=sx<=100 and 0<=yy<=100:
        s.append(bh)
        s.append(xm)
        s.append(yw)
        s.append(sx)
        s.append(yy)
        cjlb.append(s)
    else:
        print("成绩错误")

#代码结束
for lb in cjlb:
    print("学号{}姓名{}语文{}数学{}英语{}".format(lb[0],lb[1],lb[2],lb[3],lb[4]))

4. 成绩文件的删除 

score.csv文件中记录了多门同学的编号、姓名和三门功课的成绩(逗号键分隔) 格式如下

已将文件中的数据读入到二维列表cjlb中,补充程序,实现成绩删除的功能: 输入编号,若编号存在cjlb中,将该生的信息从cjlb删除, 若编号不存在cjlb中,显示编号不存在

f1=open("lbks//score.csv")
cjlb=[]
for line in f1:
    lb=line.strip().split(",")
    cjlb.append([lb[0],lb[1],eval(lb[2]),eval(lb[3]),eval(lb[4])])
#代码开始
bh = input("输入编号")
n = 0
for i in cjlb:
    if i[0]==bh:
        n = 1
        cjlb.remove(i)    

if n == 0:
    print("编号不存在")
#代码结束
for lb in cjlb:
    print("学号{}姓名{}语文{}数学{}英语{}".format(lb[0],lb[1],lb[2],lb[3],lb[4]))

5. 成绩文件的修改

score.csv文件中记录了多门同学的编号、姓名和三门功课的成绩(逗号键分隔) 格式如下

已将文件中的数据读入到二维列表cjlb中,补充程序,实现成绩修改的功能: 若编号不存在cjlb中,显示编号不存在。 若编号存在cjlb中,显示该生的信息,询问是否修改,若修改则输入该生的姓名和语文、数学、英语的成绩。若输入的语文、数学、英语的成绩不是数字或不在0到100之间,显示成绩错误。

f1=open("lbks//score.csv")
cjlb=[]
for line in f1:
    lb=line.strip().split(",")
    cjlb.append([lb[0],lb[1],eval(lb[2]),eval(lb[3]),eval(lb[4])])
#代码开始
bh = input("输入编号")
n = 0
for i in cjlb:
    if i[0]==bh:
        n = 1
        print(f"姓名{i[1]}语文{i[2]}数学{i[3]}英语{i[4]}")
        sf = input("是否修改")
        if sf == "y":
            xm = input("姓名")
            yw = eval(input("语文"))
            sx = eval(input("数学"))
            yy = eval(input("英语"))
            if 0<=yw<=100 and 0<=sx<=100 and 0<=yy<=100:
                i[1]=xm
                i[2]=yw
                i[3]=sx
                i[4]=yy
                print("成绩已修改")
            else:
                print("成绩错误")

if n == 0:
    print("编号不存在")      

#代码结束
for lb in cjlb:
    print("学号{}姓名{}语文{}数学{}英语{}".format(lb[0],lb[1],lb[2],lb[3],lb[4]))
     

6. 成绩文件的计算

score.csv文件中记录了多门同学的编号、姓名和三门功课的成绩(逗号键分隔) 格式如下

计算每位同学的平均分,等级 计算等级的规则如下:平均分大于等于90为优,大于等于80为良,大于等于70为中,大于等于60为合格,小于60为差 按平均分从高到低的顺序排序,将名次、姓名、平均分、等级的信息显示出来,格式如下

score结果

f1=open("lbks//score.csv")
lb=[]
#代码开始

for i in f1.readlines():
    s = []
    i = i.strip()
    f = i.split(",")
    pj = (int(f[2])+int(f[3])+int(f[4]))/3
    s.append(f[1])
    s.append(pj)
    if 90<=pj<=100:
        s.append("优")
    elif pj >= 80:
        s.append("良")
    elif pj >= 70:
        s.append("中")
    elif pj >= 60:
        s.append("合格")
    else:
        s.append("差")
    lb.append(s)

lb.sort(key=(lambda x:x[1]),reverse=True)
        
#代码结束
for i in range(len(lb)):
    print("名次{:2d}姓名{:8}平均分{:.2f} 等级{}".format(i+1,lb[i][0],lb[i][1],lb[i][2]))
f1.close()

7. 等额本息分期贷款计算

 等额本息还款法是指借款人每期偿还相等数额的钱。 每期还款的金额按以下公式计算

等额本息

其中,贷款金额dkje,还款期数ys,每期利率lv, 在程序中输入贷款金额,年限和年利率, 显示每月的序号、还款本金、还款利息和还款金额 并显示总还款金额 和 总利息

dkje=eval(input('输入贷款金额'))
ys=eval(input('输入年限'))*12
lv=eval(input('输入年利率'))/12
hkxx=[]
#代码开始
y = dkje
for i in range(1,ys+1):
    s = []
    sum1 = (dkje*lv*(1+lv)**ys) / ((1+lv)**ys-1)
    n = y * lv
    s.append(i)
    s.append(sum1-n)
    s.append(n)
    s.append(sum1)
    y = y - (sum1-n)
    hkxx.append(s)

#代码结束
s=z=0
for x in hkxx:
    print("{}期还款本金{:.2f}还款利息{:.2f}合计{:.2f}".format(x[0],x[1],x[2],x[3]))
    s=s+x[2]
    z=z+x[3]
print("总利息{:.2f}总计还款{:.2f}".format(s,z))

8. 等额本金分期贷款计算

等额本金还款法是指借款人每期偿还相等数额的本金dkje/ys。 其中,贷款金额dkje,还款期数ys 每期偿还的利息为尚欠银行的本金乘以利率lv 在程序中输入贷款金额,年限和年利率, 显示每月的序号、还款本金、还款利息和合计(还款本金与还款利息的和) 计算并显示总利息和总计还款

dkje=eval(input('输入贷款金额'))
ys=eval(input('输入年限'))*12
lv=eval(input('输入年利率'))/12
hkxx=[]
#代码开始
y = dkje
for i in range(1,ys+1):
    s = []
    n = dkje * lv
    bj = y / ys
    hj = n + bj
    s.append(i)
    s.append(bj)
    s.append(n)
    s.append(hj)
    dkje = dkje-bj
    hkxx.append(s)

#代码结束
s=z=0
for x in hkxx:
    print("{}期还款本金{:.2f}还款利息{:.2f}合计{:.2f}".format(x[0],x[1],x[2],x[3]))
    s=s+x[2]
    z=z+x[3]
print("总利息{:.2f}总计还款{:.2f}".format(s,z))

9. 选择题

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1594809.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ASP.NET基于BS的计算机等级考试系统的设计与实现

摘 要 随着计算机技术的发展及计算机的日益普及&#xff0c;基于B/S结构的考试系统与无纸化办公一样已成为大势所趋。论文详细论述了一个基于B/S结构的计算机等级考试系统的设计过程。软件采用ASP.NET 2005作开发平台&#xff0c;C#作编程语言&#xff0c;SQL Server 2005作…

sheng的学习笔记-AI-决策树(Decision Tree)

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 目录 什么是决策树 划分选择 信息增益 增益率 基尼指数 剪枝处理 预剪枝 后剪枝 连续值处理 另一个例子 基本步骤 排序 计算候选划分点集合 评估分割点 每个分割点都进行评估&#xff0c;找到最大信息增益的…

绿联HDMI延长器40265使用AG7120芯片放大器方案

HDMI延长器和放大器 延长器&#xff1a;主要用于HDMI线的延长&#xff0c;有HDMI对接头方式延长&#xff0c;或HDMI公头加HDMI母头的HDMI线进行延长&#xff0c;或通过网线方式延长&#xff0c;早期为双网线&#xff0c;目前已发展为单网线&#xff0c;需要注意的是&#xff0…

ChatGPT-4 Turbo 今天开放啦!附如何查询GPT-4 是否为 Turbo

2024年4月12日&#xff0c;OpenAI在X上宣布GPT-4 Turbo开放了&#xff01;提高了写作、数学、逻辑推理和编码方面的能力。另外最重要的是&#xff0c;响应速度更快了&#xff01;&#xff01; ChatGPT4 Turbo 如何升级&#xff1f;解决国内无法升级GPT4 Turbo的问题&#xff0…

【数据结构】泛型(分享重点)

什么是泛型&#xff1f; 泛型就是适用于许多许多类型&#xff0c;对类型参数化。 怎么创建一个泛型呢 class 泛型类名称<类型形参列表> { // 这里可以使用类型参数 } class ClassName<T1, T2, ..., Tn> { } class 泛型类名称<类型形参列表> extends 继承类…

消息中间件Kafka分布式数据处理平台

目录 一.Kafka基本介绍 1.定义 2.特点 &#xff08;1&#xff09;高吞吐量、低延迟 &#xff08;2&#xff09;可扩展性 &#xff08;3&#xff09;持久性、可靠性 &#xff08;4&#xff09;容错性 &#xff08;5&#xff09;高并发 3.系统架构 &#xff08;1&#…

oracle 19c 主备 补丁升级19.22

补丁升级流程 备库升级 备库备份$ORALCE_HOME du -sh $ORACLE_HOME ​​​​​​​ 备份目录将dbhome_1压缩 cd $ORACLE_HOME cd .. Ls tar -cvzf db_home.tar.gz db_home_1 /opt/oracle/product/19c ​​​​​​​​​​​​​​ 关闭监听关闭数据库查看sq…

【VS2019】x64 Native Tools Command Prompt for Vs 2019使用conda命令进入环境

【VS2019】x64 Native Tools Command Prompt for Vs 2019使用conda命令进入环境 安装完VS2019后&#xff0c;打开终端x64 Native Tools Command Prompt for Vs 2019&#xff0c;直接运行conda会出现‘conda’ 不是内部或外部命令&#xff0c;也不是可运行的程序 原因分析&am…

【Java虚拟机】三色标记、增量更新、原始快照、记忆集与卡表

三色标记、增量更新、原始快照、记忆集与卡表 三色标记基本原来错标、漏标错标漏标 增量更新基本原理写屏障 原始快照基本原理为什么G1使用原始快照而不用增量更新。 记忆集与卡表 三色标记 基本原来 三色标记是JVM的垃圾收集器用于标记对象是否存活的一种方法。 三色是指黑…

【opencv】示例-train_HOG.cpp 训练和测试基于支持向量机(SVM)的行人检测器

#include "opencv2/imgproc.hpp" // 包含OpenCV图像处理头文件 #include "opencv2/highgui.hpp" // 包含OpenCV高层GUI&#xff08;图形用户界面&#xff09;头文件 #include "opencv2/ml.hpp" // 包含OpenCV机器学习模块头文件 #includ…

软考 - 系统架构设计师 - 质量属性例题 (2)

问题1&#xff1a; 、 问题 2&#xff1a; 系统架构风险&#xff1a;指架构设计中 &#xff0c;潜在的&#xff0c;存在问题的架构决策所带来的隐患。 敏感点&#xff1a;指为了实现某个质量属性&#xff0c;一个或多个构件所具有的特性 权衡点&#xff1a;指影响多个质量属性…

(一)基于IDEA的JAVA基础15

还是先来说一下: Arrays工具类 Arrays是java.util包提供的工具类 提供了操作数组的方法&#xff0c;如排序,查询等。 如排序(升序)使用sort方法 语法: Arrays.sort(数组名)&#xff1b; 还是直接写来看看: public class Test01 { public static void main(String[] args)…

vscode开发 vue3+ts 的 uni-app 微信小程序项目

创建uni-app项目&#xff1a; # 创建用ts开发的uni-app npx degit dcloudio/uni-preset-vue#vite-ts 项目名称 # 创建用js开发的uni-app npx degit dcloudio/uni-preset-vue#vite 项目名称VS Code 配置 为什么选择 VS Code &#xff1f; HbuilderX 对 TS 类型支持暂不完善VS…

深入理解GCC/G++在CentOS上的应用

文章目录 深入理解GCC/G在CentOS上的应用编译C和C源文件C语言编译C语言编译 编译过程的详解预处理编译汇编链接 链接动态库和静态库静态库和动态库安装静态库 结论 深入理解GCC/G在CentOS上的应用 在前文的基础上&#xff0c;我们已经了解了CentOS的基本特性和如何在其上安装及…

一个基于单片机内存管理-开源模块

概述 此模块是一位大佬写的应用于单片机内存管理模块mem_malloc,这个mem_malloc的使用不会产生内存碎片,可以高效利用单片机ram空间。 源码仓库:GitHub - chenqy2018/mem_malloc mem_malloc介绍 一般单片机的内存都比较小,而且没有MMU,malloc 与free的使用容易造成内存碎…

springboot抑郁症科普知识测试系统ssm-java

本系统设计了二种角色&#xff1a;管理员&#xff0c;用户。通过此系统&#xff0c;管理员可以在线视频、案例展示、、测试试卷、测试试题进行测试。以及在线对测试试卷进行批阅和批量删除&#xff0c;用户可以对自己的测试试卷进行测试&#xff0c;对管理员已经批阅过的试卷可…

【opencv】示例-stereo_calib.cpp 基于OpenCV的立体视觉相机校准的完整示例

// 包含OpenCV库中用于3D校准的相关头文件 #include "opencv2/calib3d.hpp" // 包含OpenCV库中用于图像编码解码的相关头文件 #include "opencv2/imgcodecs.hpp" // 包含OpenCV库中用于GUI操作的相关头文件 #include "opencv2/highgui.hpp" // 包…

在Mac中打开终端的3种方法

在使用Mac时&#xff0c;有时需要深入研究设置&#xff0c;或者完成一些开发人员级的命令行任务。为此&#xff0c;你需要终端应用程序来访问macOS上的命令行。下面是如何启动它。 如何使用聚焦搜索打开终端 也许打开终端最简单、最快的方法是通过聚焦搜索。要启动聚焦搜索&a…

【算法分析与设计】全排列

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给定一个不含重复数字的整数数组 nums &#xff0c;返回其 所有可能的全排列 。可以 按任意顺序 返回答案。 示例 示例 1&#xff1…

LoRA微调

论文&#xff1a;LoRA: Low-Rank Adaptation of Large Language Models 实现&#xff1a;microsoft/LoRA: Code for loralib, an implementation of “LoRA: Low-Rank Adaptation of Large Language Models” (github.com) 摘要 自然语言处理的一个重要的开发范式包括&#…