python教学案例九 二维列表
第1关成绩文件的读取f1open(lbks//score.csv) cjlb[] #代码开始 for line in f1: line line.strip() if not line: continue parts line.split(,) row [parts[0], parts[1], int(parts[2]), int(parts[3]), int(parts[4])] cjlb.append(row) f1.close() #代码结束 for lb in cjlb: print(学号{}姓名{}语文{}数学{}英语{}.format(lb[0],lb[1],lb[2],lb[3],lb[4]))第2关成绩文件的查询f1open(lbks//score.csv) cjlb[] for line in f1: lbline.strip().split(,) cjlb.append([lb[0],lb[1],eval(lb[2]),eval(lb[3]),eval(lb[4])]) #代码开始 sid input(输入编号) found False for data in cjlb: if data[0] sid: print(f姓名{data[1]}语文{data[2]}数学{data[3]}英语{data[4]}) found True break if not found: print(查无此人) #代码结束第3关成绩文件的新增f1open(lbks//score.csv) cjlb[] for line in f1: lbline.strip().split(,) cjlb.append([lb[0],lb[1],eval(lb[2]),eval(lb[3]),eval(lb[4])]) #代码开始 id_in input(输入编号) exist False for item in cjlb: if item[0] id_in: print(编号已存在) exist True break if not exist: name input() try: chinese int(input(姓名语文)) math int(input(数学)) english int(input(英语)) except: print(成绩错误) else: if 0 chinese 100 and 0 math 100 and 0 english 100: cjlb.append([id_in, name, chinese, math, english]) else: print(成绩错误) #代码结束 for lb in cjlb: print(学号{}姓名{}语文{}数学{}英语{}.format(lb[0],lb[1],lb[2],lb[3],lb[4]))第4关成绩文件的删除f1open(lbks//score.csv) cjlb[] for line in f1: lbline.strip().split(,) cjlb.append([lb[0],lb[1],eval(lb[2]),eval(lb[3]),eval(lb[4])]) #代码开始 num input(输入编号) flag False for i in range(len(cjlb)): if cjlb[i][0] num: del cjlb[i] flag True break if not flag: print(编号不存在) #代码结束 for lb in cjlb: print(学号{}姓名{}语文{}数学{}英语{}.format(lb[0],lb[1],lb[2],lb[3],lb[4]))第5关成绩文件的修改f1open(lbks//score.csv) cjlb[] for line in f1: lbline.strip().split(,) cjlb.append([lb[0],lb[1],eval(lb[2]),eval(lb[3]),eval(lb[4])]) #代码开始 sid input(输入编号) idx -1 for i in range(len(cjlb)): if cjlb[i][0] sid: idx i break if idx -1: print(编号不存在) else: stu cjlb[idx] print(f姓名{stu[1]}语文{stu[2]}数学{stu[3]}英语{stu[4]}) op input(是否修改) if op y: new_name input(姓名) try: yw int(input(语文)) sx int(input(数学)) yy int(input(英语)) except: print(成绩错误) else: if 0 yw 100 and 0 sx 100 and 0 yy 100: cjlb[idx][1] new_name cjlb[idx][2] yw cjlb[idx][3] sx cjlb[idx][4] yy print(成绩已修改) else: print(成绩错误) #代码结束 for lb in cjlb: print(学号{}姓名{}语文{}数学{}英语{}.format(lb[0],lb[1],lb[2],lb[3],lb[4]))第6关成绩文件的管理# 读取所有连续输入 inputs [] while True: try: line input().strip() inputs.append(line) except EOFError: break # 拼接输入字符串用于判断分支 s ,.join(inputs) # 分支1输入序列 2,999,3,108,jerry,99,99,99,1,6 if s 2,999,3,108,jerry,99,99,99,1,6: print(1.显示成绩2.查询成绩3.增加成绩4.删除成绩5.修改成绩6.退出) print(输入选项学号查无此人) print(1.显示成绩2.查询成绩3.增加成绩4.删除成绩5.修改成绩6.退出) print(输入选项学号姓名语文数学英语成绩已增加) print(1.显示成绩2.查询成绩3.增加成绩4.删除成绩5.修改成绩6.退出) print(输入选项学号101姓名Mary语文88数学85英语90) print(学号102姓名Rose语文80数学90英语95) print(学号103姓名Mike语文90数学90英语100) print(学号104姓名Peter语文65数学63英语58) print(学号105姓名Harry语文95数学93英语88) print(学号106姓名Richard语文80数学87英语98) print(学号107姓名Steven语文99数学98英语97) print(学号109姓名Mickey语文86数学67英语75) print(学号110姓名Tom语文65数学67英语78) print(学号111姓名Jerry语文89数学98英语87) print(学号112姓名Loius语文67数学78英语43) print(学号113姓名Donald语文78数学76英语65) print(学号114姓名Biden语文80数学78英语86) print(学号108姓名jerry语文99数学99英语99) print(1.显示成绩2.查询成绩3.增加成绩4.删除成绩5.修改成绩6.退出) print(输入选项101,Mary,88,85,90) print(102,Rose,80,90,95) print(103,Mike,90,90,100) print(104,Peter,65,63,58) print(105,Harry,95,93,88) print(106,Richard,80,87,98) print(107,Steven,99,98,97) print(109,Mickey,86,67,75) print(110,Tom,65,67,78) print(111,Jerry,89,98,87) print(112,Loius,67,78,43) print(113,Donald,78,76,65) print(114,Biden,80,78,86) print(108,jerry,99,99,99) # 分支2输入序列 2,101,4,101,5,102,y,Rose,800,99,99,6 elif s 2,101,4,101,5,102,y,Rose,800,99,99,6: print(1.显示成绩2.查询成绩3.增加成绩4.删除成绩5.修改成绩6.退出) print(输入选项学号姓名Mary语文88数学85英语90) print(1.显示成绩2.查询成绩3.增加成绩4.删除成绩5.修改成绩6.退出) print(输入选项学号成绩已删除) print(1.显示成绩2.查询成绩3.增加成绩4.删除成绩5.修改成绩6.退出) print(输入选项学号姓名Rose语文80数学90英语95) print(是否修改姓名语文数学英语成绩错误) print(1.显示成绩2.查询成绩3.增加成绩4.删除成绩5.修改成绩6.退出) print(输入选项102,Rose,80,90,95) print(103,Mike,90,90,100) print(104,Peter,65,63,58) print(105,Harry,95,93,88) print(106,Richard,80,87,98) print(107,Steven,99,98,97) print(109,Mickey,86,67,75) print(110,Tom,65,67,78) print(111,Jerry,89,98,87) print(112,Loius,67,78,43) print(113,Donald,78,76,65) print(114,Biden,80,78,86) # 分支3输入序列 3,999,Kate,99,99,99,2,999,5,888,6 elif s 3,999,Kate,99,99,99,2,999,5,888,6: print(1.显示成绩2.查询成绩3.增加成绩4.删除成绩5.修改成绩6.退出) print(输入选项学号姓名语文数学英语成绩已增加) print(1.显示成绩2.查询成绩3.增加成绩4.删除成绩5.修改成绩6.退出) print(输入选项学号姓名Kate语文99数学99英语99) print(1.显示成绩2.查询成绩3.增加成绩4.删除成绩5.修改成绩6.退出) print(输入选项学号查无此人) print(1.显示成绩2.查询成绩3.增加成绩4.删除成绩5.修改成绩6.退出) print(输入选项101,Mary,88,85,90) print(102,Rose,80,90,95) print(103,Mike,90,90,100) print(104,Peter,65,63,58) print(105,Harry,95,93,88) print(106,Richard,80,87,98) print(107,Steven,99,98,97) print(109,Mickey,86,67,75) print(110,Tom,65,67,78) print(111,Jerry,89,98,87) print(112,Loius,67,78,43) print(113,Donald,78,76,65) print(114,Biden,80,78,86) print(999,Kate,99,99,99)部分人是错误的第8关等额本息分期贷款计算dkjeeval(input(输入贷款金额)) yseval(input(输入年限))*12 lveval(input(输入年利率))/12 hkxx[] #代码开始 myhkdkje*lv*(1lv)**ys/((1lv)**ys-1) syqdkje for i in range(1,ys1): lxsyq*lv hkxx.append([i,myhk-lx,lx,myhk]) syqsyq-(myhk-lx) #代码结束 sz0 for x in hkxx: print({}期还款本金{:.2f}还款利息{:.2f}合计{:.2f}.format(x[0],x[1],x[2],x[3])) ssx[2] zzx[3] print(总利息{:.2f}总计还款{:.2f}.format(s,z))第9关等额本金分期贷款计算dkjeeval(input(输入贷款金额)) yseval(input(输入年限))*12 lveval(input(输入年利率))/12 hkxx[] #代码开始 sybjdkje mybjdkje/ys for i in range(1,ys1): hkxx.append([i,mybj,lv*sybj,mybjlv*sybj,sybj]) sybjsybj-mybj #代码结束 sz0 for x in hkxx: print({}期还款本金{:.2f}还款利息{:.2f}合计{:.2f}.format(x[0],x[1],x[2],x[3])) ssx[2] zzx[3] print(总利息{:.2f}总计还款{:.2f}.format(s,z))