1.
tr.txt放在项目目录下,eachline自带换行符,故在print后需要添加逗号。
if __name__ == '__main__':
f = open('tr.txt','r')
for eachline in f:
if eachline[0]!='#':
print eachline,
加上处理注释不出现在开头的情况,eg: doge # this is a dog
if __name__ == '__main__':
f = open('tr.txt','r')
for eachline in f:
index = eachline.find('#')
if index != -1:
print eachline[0:index]
else:
print eachline,
f.close
2.
if __name__ == '__main__':
name = raw_input('file name :')
number = int(raw_input('hangshu :'))
f = open(name,'r')
i = 0
for eachline in f:
if i <= number-1:
print eachline,
i = i+1
f.close
3.
readlines函数会读取所有剩余的行然后返回一个字符串列表
if __name__ == '__main__':
name = raw_input('file name :')
f = open(name,'r')
alllines = f.readlines()
f.close
print len(alllines)
4.
先将文件读到字符串数组alllines中,再按行数读取,分别处理整页部分及最后剩下不足一页的行
if __name__ == '__main__':
name = raw_input('file name :')
number = 3
f = open(name,'r')
pass
alllines = f.readlines()
#处理整页部分
index = len(alllines)/number
i = 0
while i < index:
j = i*number
while j < i*number+number:
print alllines[j],
j = j+1
if i != index-1:
order = raw_input('press any key to continue')
if order != '':
i = i+1
else:
break
else:
i = i+1
#处理最后剩下不足一页的部分
order = raw_input('press any key to the rest part')
if order != '':
j = i*number
while j < len(alllines):
print alllines[j],
j = j + 1
5.
在6-4的基础上改动完成,数据为一行以逗号隔开的字符串
#coding=utf-8
from __future__ import division #floor除法
def grade(number1) :
grd = ''
if 90<=number1<=100 :
grd = 'A'
elif 80<=number1<=89 :
grd = 'B'
elif 70<=number1<=79 :
grd = 'C'
elif 60<=number1<=69 :
grd = 'D'
elif number1<=60 :
grd = 'F'
else:
print "not vaild"
return grd
if __name__ == '__main__' :
list = []
while True:
name = raw_input('filename:')
if name == '':
break
else:
f = open(name,'r')
line = f.readline()
li = line.split(',')
#向序列添加序列使用extend函数
list.extend(li)
i = 0
sum = 0
while i < len(list):
#list[i]此时是字符串,需要转化为int
print grade(int(list[i]))
sum = sum + int(list[i])
i = i + 1
print sum / len(list)
结果
filename:tr.txt
filename:ar.txt
filename:
F
C
F
F
F
F
F
B
39.125
6.
未处理文件行数不一样的情况。未处理每行字符串的长短比较问题,若需要处理,可以在较短的文本处补空格,处理为长度完全相同的两个文本。
def compare(str1,str2):
i = 0
while i < len(str1):
if str1[i] != str2[i]:
return i
break
else:
i = i+1
else:
return 'same'
if __name__ == '__main__':
f1 = open('ar.txt','r')
f2 = open('tr.txt','r')
allline1 = f1.readlines()
allline2 = f2.readlines()
i = 0
while i <len(allline1):
#每行比较,若有不同返回index
index = compare(allline1[i],allline2[i])
if index != 'same':
print i,index
break
else:
i = i+1
else:
print 'same'
7.
if __name__ == '__main__':
option={}
f=open('c:\windows\win.ini','r')
for line in f:
if line.startswith(';'):
print line,
if line.startswith('['):
print line,
if '=' in line:
li = line.split('=')
option[li[0]]=li[1]
f.close()
print option
结果:
; for 16-bit app support
[fonts]
[extensions]
[mci extensions]
[files]
[Mail]
[Aliim]
{'MAPIXVER': '1.0.0.1\n', 'CMCDLLNAME32': 'mapi32.dll\n', 'MAPI': '1\n', 'CMC': '1\n', 'MAPIX': '1\n', 'OLEMessaging': '1\n', 'ImageManClear': '1\n'}
8.
参考了网上的博客,dir()函数显示对象的属性,getattr()用于返回一个对象属性或者方法
if __name__ == '__main__':
name = raw_input('module')
module = __import__(name)
ml = dir(module)
print ml
for i in ml:
print 'name: ', i
print 'type: ', type(getattr(module, i))
print 'value: ', getattr(module, i)
9.
网上的答案是在py文档中查找了doc字符串。检查了几个py文件发现没有规则的doc(Lib中),选择输出的是py文件属性中的__doc,如第8题的属性一样。也可以直接在py文件中通过找三引号的方式来查找文档字符串
import os.path
if __name__ == '__main__':
#进入到python标准库内
path = 'D:/python/pythoninstall/Lib/'
os.chdir(path)
cwd = os.getcwd()
#列出在path路径下以py结尾的文件
pyfiles = [f for f in os.listdir(path) if f.endswith('.py')]
db={}
for y in pyfiles:
dirfile = dir(y)
# print y.__doc__
state = getattr(y,'__doc__','defalut')
db[y] = state
for key in db:
print key,db[key]
查找类及函数的直接在py文档中找的class和def
#coding=utf-8
import os
import os.path
if __name__ == '__main__':
#进入到python标准库内
path = 'D:/python/pythoninstall/Lib/'
os.chdir(path)
cwd = os.getcwd()
#列出在path路径下以py结尾的文件
pyfiles = [f for f in os.listdir(path) if f.endswith('.py')]
db={}
dbdef={}
for y in pyfiles:
st = ''
stdef=''
f = open(y)
for lines in f:
if lines.startswith('class'):
st = st+lines
if lines.startswith('def'):
stdef = stdef+lines
f.close()
db[y] = st
dbdef[y] = stdef
for key in db:
print key,db[key]
for keys in dbdef:
print keys,dbdef[keys]
10.
暂时没什么做GUI的需求,就不写图形界面了。只写逻辑。只写了储蓄的,如果需要加上支票,金融等,可以在类里面扩充。在每次写入文件前会保存一个变量的temp做备份。如果取消或发生情况,会使用该temp。不是很完善
class chuxu:
def __init__(self,money,jie,dai):
self.money = money
self.jie = jie
self.dai = dai
def cunkuan(self,cunkuan):
self.money = self.money + cunkuan
return self.money
def qukuan(self,qukuan):
self.money = self.money - qukuan
return self.money
def jiekuan(self,jiekuan):
self.jie = self.jie + jiekuan
self.money = self.money + jiekuan
return self.money,self.jie
def daikuan(self,daikuan):
self.dai = self.dai + daikuan
self.money = self.money + daikuan
return self.money,self.dai
def save(self,file):
f = open(file,'w')
f.write(str(self.money)+'\n')
f.write(str(self.jie)+'\n')
f.write(str(self.dai)+'\n')
f.close()
def quxiao(self,money,daikuan,jiekuan):
self.money = money
self.dai = daikuan
self.jie = jiekuan
return self.money,self.dai,self.jie
if __name__ == '__main__':
user = chuxu(1000,0,0)
tempmoney = user.money
tempjie = user.jie
temdai = user.dai
index = True
while index:
print 'cunkuan:c'
print 'qukuan:q'
print 'jiekuan:j'
print 'daikuan:d'
print 'cancel:a'
print 'quit: other key '
order = raw_input('order:')
if order == 'c':
cunkuan = int(raw_input('cunkuan:'))
money = user.cunkuan(cunkuan)
print 'now money is %d' % money
elif order == 'q':
qukuan = int(raw_input('qukuan:'))
money = user.qukuan(qukuan)
print 'now money is %d' %money
elif order == 'j':
jiekuan = int(raw_input('daikuan:'))
(money, jie) = user.jiekuan(jiekuan)
print 'now money is %d and jiekuan is %d' % (money, jie)
elif order == 'd':
daikuan = int(raw_input('daikuan:'))
(money, dai) = user.daikuan(daikuan)
print 'now money is %d and daikuan is %d' % (money ,dai)
elif order == 'a':
(money ,jie ,dai ) = user.quxiao(tempmoney,tempjie,temdai)
print money,jie,dai
else:
tempmoney = user.money
tempjie = user.jie
temdai = user.dai
user.save('tr.txt')
index = False
11.
在html文件那里应该将网址处理为html格式定义的,本代码未做处理直接写的字符串
正则表达式留在后面学习了这部分再做补充
#coding = utf-8
def readfile():
f = open('tr.txt', 'r')
record = f.readlines()
li = []
for i in record:
i = i.rstrip()
li.append(i.split(','))
return li
def savefile(lis):
f = open('tr.txt','w')
for i in lis:
for j in range(len(i)):
f.write(str(i[j]))
if j != len(i)-1:
f.write(',')
f.write('\n')
f.close()
if __name__ == '__main__':
index = True
while True:
lis = readfile()
print 'add:a'
print 'fix:b'
print 'delete:d'
print 'find:f'
print 'html:h'
print 'wenjia:w'
order = raw_input('order:')
if order == 'a':
li = []
if len(lis)!= 0:
num = int(lis[len(lis)-1][0])+1
else:
num = 1
name = raw_input('name:')
url = raw_input('url:')
statement = raw_input('state:')
li.append(num)
li.append(name)
li.append(url)
li.append(statement)
lis.append(li)
savefile(lis)
print 'add suceessfully'
elif order == 'b':
for i0 in lis:
print i0
order = int(raw_input('choose which to fix'))-1
name = raw_input('name:')
url = raw_input('url:')
statement = raw_input('state:')
lis[order][1] = name
lis[order][2] = url
lis[order][3] = statement
savefile(lis)
print 'fix suceessfully'
elif order == 'd':
for i0 in lis:
print i0
order = int(raw_input('choose which to delete'))-1
lis.remove(lis[order])
savefile(lis)
print 'delete suceessfully'
elif order == 'f':
name = raw_input('name:')
url = raw_input('url:')
for i1 in lis:
if i1[1] == name and i1[2] == url:
print i1
break
else:
print 'have no such mark'
elif order == 'h':
html = open('tr.html','w')
html.write('<html>'+'\n')
html.write('<head>'+'\n')
html.write('<meta charset="UTF-8">'+'\n')
html.write('<title>'+'mark'+'</title>'+'\n')
html.write('</head>' + '\n')
html.write('<body>' + '\n')
for i2 in lis:
html.write('<p>')
for j in range(len(i2)):
html.write(str(i2[j]))
if j != len(i2) - 1:
html.write(',')
html.write('</p>'+'\n')
html.write('</body>'+'\n')
html.write('</html>'+'\n')
html.close()
elif order == 'w':
for i0 in lis:
print i0
order = raw_input('choose which to put in one file').split(',')
orderli = []
for i3 in order:
orderli.append(int(i3)-1)
filename = raw_input('filename:')
fil = open(filename,'w')
for i4 in orderli:
for i5 in range(len(lis[i4])):
fil.write(str(lis[i4][i5]))
if i5!= len(lis[i4])-1:
fil.write(',')
fil.write('\n')
fil.close()