题目31:从一个文件中选出使用频率最多的30个单词
from time import time
from operator import itemgetter
def test():
count = {}
for line in open("test.txt"):
for word in line.split():
count[word] = 1 + count.get(word, 0)
print sorted(count.iteritems(), key=itemgetter(1), reverse=True)[0:30]
if __name__ == "__main__":
t1 = time()
test()
print time()-t1
题目32:把字符串反转
>>>astring=['sky','world','hello']
>>> revchars=astring[::-1]
>>> print revchars
['hello', 'world', 'sky']
按照单词翻转字符串:
>>> str="i love you"
>>> revwords=str.split()
>>> revwords.reverse()
>>> print revwords
['you', 'love', 'i']
>>>revwords=''.join(revwords)
>>> print revwords
Youlovei
如果想逐词反转但又不同时不改变原先的空格,可以用正则表达式来分割原字符串:
>>> import re
>>>revwords=re.split(r'(\s+)',str)
>>> revwords.reverse()
>>> revwords= ''.join(revwords)
>>> print revwords
you love i
题目33:遍历列表求和
方法1:
>>>mysum=[1,2,3,4,5]
>>>sum=0
>>>for i in range(len(mysum)):
sum+=mysum[i]
i+=1
>>>print sum
15
方法2:
>>> mysum=[1,2,3,4,5]
>>> sum=0
>>> for x in mysum:
sum+=x
>>> print sum
15
方法3:
>>> mysum=[1,2,3,4,5]
>>> sum=0
>>> while mysum:
sum+=mysum[0]
mysum=mysum[1:]
>>> sum
15
题目34:字符串排序
一、python中的字符串类型是不允许直接改变元素的。必须先把要排序的字符串放在容器里,如list。
二、python中的list容器的sort()函数没返回值。
>>> s="string"
>>> l=list(s)
>>> l.sort()
>>> s="".join(l)
>>> s
'ginrst'
题目35:以__name__进行单元测试
>>> def minmax(test,*args):
res=args[0]
forarg in args[1:]:
iftest(arg,res):
res=arg
returnres
>>> def lessthan(x,y): return x<y
>>> def grtrthan(x,y): return x>y
>>> if __name__=='__main__':
printminmax(lessthan,4,2,1,5,6,3)
printminmax(grtrthan,4,2,1,5,6,3)
运行结果:
1
6
题目36:类代码编写基础
实例一:基类的构造
>>> class FirstClass:
defsetdata(self,value):
self.data=value
defdisplay(self):
printself.data
>>> x=FirstClass()
>>> y=FirstClass()
>>> x.setdata("king")
>>> y.setdata(3.1415)
>>> x.display()
king
>>> y.display()
3.1415
实例二:类的继承
>>> class SecondClass(FirstClass):
defdisplay(self):
print'current value ="%s"'%self.data
>>> z=SecondClass()
>>> z.setdata(42)
>>> z.display()
current value ="42"
备注:如果FirstClass是写在模块文件内,而不是在交互模式下输入的,就可以将其导入,例如:
From modulename import FirstClass
Class SecondClass(FirstClass):
Def display(self):……..
或者等效写法如下:
Import modulename
Class SecondClass(modulename.FirstClass):
Defdisplay(self):………
实例三:类的运算符重载
>>> class ThirdClass(SecondClass):
def__init__(self,value):
self.data=value
def__add__(self,other):
returnThirdClass(self.data+other)
def__str__(self):
return'[ThirdClass:%s]'% self.data
defmul(self,other):
self.data*=other
>>> a=ThirdClass('abc')
>>> a.dispaly()
current value ="abc"
>>> print a
[ThirdClass:abc]
>>> b=a+'xyz'
>>> b.dispaly()
current value ="abcxyz"
>>> print b
[ThirdClass:abcxyz]
>>> a.mul(3)
>>> print a
[ThirdClass:abcabcabc]
题目37:猜字小游戏
print "welcome"
g=input(" guess the name:")
guess=int(g)
if guess==5:
print "you win!"
else:
print "you lose!"
print "game over!"
完美版猜字小游戏:
from random import randint
secret=randint(1,10)
print "welcome"
guess=0
while guess!=secret:
g=input("guess the number:")
guess=int(g)
ifguess==secret:
print "you win!"
else:
if guess>secret:
print "too high"
else:
print "too low"
print "game over!"