目录
一、题目要求
二、各种解法
1. 官方解法
2. 官方解法优化
3. 列表推导式法
4. 利用map方法
5. 利用pop方法
三、学后反思
考编程模板,读取附件 data.txt 中的内容,计算第一行学生的总成绩,然后参考输入输出示例将结果直接输出到窗口中。不得修改程序中已给出的框架内容。
特别提醒:如果同学们在 IDLE 中编程,请把 .py 文件和 data.txt 文件放在同一目录下。
示例1:
输入:无
输出:"314"
data.txt中的内容如下:
李启睿,110,115,119
补充一行代码输出以上内容,原有的代码如下:
with open("data.txt","r",encoding="utf-8") as fi:
line = fi.readline().split(',')
———————————————————————
采用eval把字符相加后的式子进行运算,同时利用了列表的切片
with open("data.txt","r",encoding="utf-8") as fi:
line = fi.readline().split(',')
print(eval(line[1])+eval(line[2])+eval(line[3]))
考虑到eval可以计算字符串算式,我们可以先把数字符相加,然后用eval计算,这样减少切片和多次使用eval,执行的效率更高。
with open("data.txt","r",encoding="utf-8") as fi:
line = fi.readline().split(',')
print(eval("+".join(line[1:])))# 把数字字符用加号拼接后用eval进行脱字符计算,这里用上了"".join()
采用列表推导式把数字字符转化为数字后计算,然后再输出。
with open("data.txt","r",encoding="utf-8") as fi:
line = fi.readline().split(',')
print(sum([int(i) for i in line[1:]]))
列表line进行切片,int把字符转化为数字,然后用内置函数sum运算。
利用map函数把每一个字符转化为数字后,然后再用sum进行计算,最后打印出结果。
with open("data.txt","r",encoding="utf-8") as fi:
line = fi.readline().split(',')
print(sum(map(int,line[1:])))
先把首个元素用pop(0)删除,然后再求合。
with open("data.txt","r",encoding="utf-8") as fi:
line = fi.readline().split(',')
line.pop(0)
print(eval("+".join(line)))