python学习笔记

最近在学习python,使用过程中有个List和dict的声明比较特殊,在此备注下

字典是可变对象,初始化一定不能放在for循环前面
List声明必须放在程序开头(按道理List也是可变对象,但不知道为什么一定要在刚开始时就声明)
代码中如果names=[]放在for循环里面, 其names.append()完后,print names永远只打印最后一个值;另外下面代码中dic={}的声明刚开始放在for循环前面,也会导致字典表的打印一直打印最后一次的内容
以下代码是练习Vamei老师给的题目,返回文本中分数小于60的人名
record.txt内容如下:
# name, age, score

tom, 12, 86

Lee, 15, 99

Lucy, 11, 58

Joseph, 19, 56
我自己研究完写了这么一段:
def readFiles():
    L=[]
    names=[]
    f=open("E:\\record.txt","r")
    for line in f:
        dic={}
        if line[0]=="#":
            li0=line[1:-1].split(",")
            #print li0
        else:
            li1=line[0:-1].split(",")
           #print li1
            dic["name"]=li1[0]
            dic["age"]=li1[1]
            dic["score"]=li1[2]
            L.append(dic)
    print L
    f.close()
    for i in range(len(L)):
        #print L[i]["score"]
        #names=[]
        if L[i]["score"]<"60":
            names.append(L[i]["name"])
            #print names
    print names
    

  vamei老师的教程不错,写的简单明了,适合新手入门。http://www.cnblogs.com/vamei/tag/Python/default.html?page=3

 

为了完成练习中部置的功能,将上面的代码再加了一点功能,这里做个记录。

def readFiles():
    L=[]
    names0=[]
    names1=[]
    names3=[]
    scoreSum=0
    f=open("E:\\record.txt","r")
    for line in f:
        dic={}
        if line[0]=="#":
            li0=line[1:-1].split(",")
            #print li0
        else:
            li1=line[0:-1].split(",")
           #print li1
            dic["name"]=li1[0]
            dic["age"]=li1[1]
            dic["score"]=li1[2]
            L.append(dic)
    print L
    f.close()
    for i in range(len(L)):
        #print L[i]["score"]
        diccc={}
        if L[i]["score"]<"60":
            names0.append(L[i]["name"])
            #print names
        if L[i]["name"][0]=="L":
            names1.append(L[i]["name"])
        scoreSum=scoreSum+int(L[i]["score"])
        #names3.append(L[i]["name"].capitalize())
        diccc['name']=L[i]["name"].capitalize()
        diccc['age']=L[i]["age"]
        diccc['score']=L[i]["score"]
        names3.append(diccc)

    print names0
    print names1
    print scoreSum
    print names3

print readFiles()

 

posted @ 2016-09-23 15:57  sussie  阅读(217)  评论(0编辑  收藏  举报