python小题目

Vamei博客地址:http://www.cnblogs.com/vamei/archive/2012/07/19/2600135.html#!comments

请看Vamei博客下面别人的跟帖!

有一个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开头?

所有人的总分是多少?

3)姓名的首字母需要大写,该record.txt是否符合此要求? 如何纠正错误的地方?

下面贴上我认为比较写的比较好的:

1.za花生树写的:

info = None
with open('test.txt','rb') as fs:
    info = [eachline.strip('\n').split(',') for eachline in fs if not eachline.startswith('#')]
print [item[0] for item in info if int(item[2]) < 60]
print [item[0] for item in info if item[0].startswith('L')]
print sum(int(item[2]) for item in info)
if filter(lambda x:x[0][0].lower() == x[0][0],info):
    with open('new.txt','wb') as fd:
        fd.write('\n'.join([','.join([item[0][0].upper()+item[0][1:],item[1],item[2]]) for item in info]))


2.猫咪cat写的:

#coding=utf8
 
class UserRecord(object):
    def __init__(self, name, age, score):
        self.name = name
        self.age = int(age)
        self.score = int(score)
    def __str__(self):
        return "%s, %d, %d" % (self.name, self.age, self.score)
 
if __name__ == '__main__':
     
    info = [UserRecord(*(line.split(', '))) for line in file('record.txt') if line.strip() and not line.startswith('#')]
 
    print "得分低于60的人都有谁?\n",' '.join([x.name for x in info if x.score < 60])
    print "谁的名字以L开头?\n",' '.join([y.name for y in info if y.name.startswith('L')])
    print "所有人的总分是多少?\n",sum([z.score for z in info])
    print "姓名的首字母需要大写,该record.txt是否符合此要求?\n",all([x.name.istitle() for x in info])
 
    for x in info:
        x.name = x.name.capitalize()
 
    open('record2.txt','w').writelines("\n".join(map(str, info)))

转载于:https://www.cnblogs.com/v-BigdoG-v/p/7398580.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值