用python实现如下功能:
有一个record.txt的文档,内容:
# name, age, score
tom, 12, 86
Lee, 15, 99
Lucy, 11, 58
Joseph, 19, 56
第一栏为姓名(name),第二栏为年纪(age),第三栏为得分(score)
现在,写一个Python程序,
1)读取文件
2)打印如下结果:
得分低于60的人都有谁?
谁的名字以L开头?
所有人的总分是多少?
#-*- coding:utf-8 -*-
'''''
1)读取文件
2)打印如下结果:
得分低于60的人都有谁?
谁的名字以L开头?
所有人的总分是多少?
3)姓名的首字母需要大写,该record.txt是否符合此要求? 如何纠正错误的地方?
复制代码 代码示例:
'''
import sys
reload(sys)
sys.setdefaultencoding('utf8')
# 读取文件,并去掉注释行和空行
fobj = open("record.txt")
lines = fobj.readlines()
fobj.close()
score_total = 0
startswith_L = []
score_lt_60 = []
name_not_title = []
new_lines = []
for line in lines:
if line.strip() and not line.startswith("#"):
name,age,score = map(lambda s : s.strip(), line.split(','))
score = int(score)
if score < 60:
score_lt_60.append(name)
if name.startswith("L"):
startswith_L.append(name)
if not name.istitle():
name_not_title.append(name)
name = name.capitalize()
score_total += score
line = ", ".join([name,age,str(score)]) + "n"
new_lines.append(line)
print "得分低于60的人:".encode("gb2312")
for p in score_lt_60:
print p
print "以L开头的人名:".encode("gb2312")
for p in startswith_L:
print p
print "首字母未大写的人名:".encode("gb2312")
for p in name_not_title:
print p
print "所有人的总分:".encode("gb2312")
print score_total
print "新行:".encode("gb2312")
print new_lines
fobj = open("record2.txt", "w")
lines = fobj.writelines(new_lines)
fobj.close()