python笔试题 python读写并打印文件

发布时间:2020-11-11编辑:脚本学堂
本文介绍了python读写文件、打印文件的方法,一道python笔记题,有需要的朋友参考下。

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