您的位置:首页 > 编程语言 > Python开发

python学习笔记

2016-09-23 15:57 274 查看
最近在学习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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: