源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

自己使用总结Python程序代码片段

  • 时间:2020-12-01 22:15 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:自己使用总结Python程序代码片段
用于记录自己写的,或学习期间看到的不错的,小程序,持续更新...... **************************************************************** [b]【例001】计算:1-2+3-4..+199-200值[/b]
[u]复制代码[/u] 代码如下:
#encoding=utf-8  #计算 1-2+3-4..+199-200值  #1+3+5+7+...199  #-2-4-6...-200  sum1  = 0  sum2  = 0  for i in range(1,200,2):      #计算1+3+5+7...199      sum1 +=i  print sum1      for i in range(-200,0,2):    #计算-2+(-4)+(-6)...+(-200)      sum2 +=i  print sum2      print "The total of 1-2+3-4..+199-200 is: ", sum1+sum2 
[b]【例002】将两个文件中相同的部分,写到一个文件中[/b]
[u]复制代码[/u] 代码如下:
#encoding=utf-8  #Python 2.7.4  #Purpose:  将文件1.txt,2.txt中相同的内容放到3.txt中;  f1 = open("1.txt","r+")  f2 = open("2.txt","r+")  f3 = open("3.txt","w+")      all1 = f1.readlines()    #先拿文件1中所有行取出  all2 = f2.readlines()    #再拿文件2中所有行取出  f1.close()  f2.close()      for l1 in all1:      for l2 in all2:          if l1.strip()==l2.strip():  #比较行中内容是否一样              f3.write(l2)      else:          continue  else:      pass            print "#"*40  f3.close() 
[b]【例003】反向读取文件[/b] 假如要读取的test.txt文件内容如下: 
[u]复制代码[/u] 代码如下:
Python  Perl  Java  Shell 
实现代码:
[u]复制代码[/u] 代码如下:
file1 = file('test.txt','r')  list1 = []  #用一个空列表用于存放每行的内容  while True:      line = file1.readline()      list1.append(line.strip())      if len(line) == 0:          break  for l in list1[::-1]: #反向遍历,然后依次读取出来      print l    file1.close() 
输出结果: 
[u]复制代码[/u] 代码如下:
Shell  Java  Perl  Python 
[b]【例004】 往文件中所有添加指定的前缀[/b] 比如文中: print是一个函数 文本文件强制二进制编码 就变成了下面的
[u]复制代码[/u] 代码如下:
01.Python 3.0:  #print是一个函数  02.Python 3.0:  #文本文件强制二进制编码  #coding = gbk     #中文编码    f_r = open('test.txt')     #打开要处理文件  f_w = open('file.txt','w') #创建要添加文件    i = 0    #加前缀标志位    while True:      i += 1      line = f_r.readline()      if not line:          break      f_w.write('d'%(i) + '.Python 3.0:  #' + line)#字符串格式化及拼接技巧    f_r.close()   #关闭打开的文件句柄  f_w.close()   
[b]【例005】[/b]
[u]复制代码[/u] 代码如下:
#coding = gbk  ''''' 下面code.txt文件中内容,将 01 CN Chinese 02 IN India 03 HK HongKang 04 JP Japan 05 DE Germany 06 US United States of America 要文件的内容,每一行文件,写到一个文件,且文件名前面两个字段,如 文件名为:01_CN_Chinese.txt 文中内容:01 CN Chinese 知识要点: 1. ''.join 和 split函数 2. 字符的联合 3. with语句,open文件 4. 遍历数组 5. 切片操作 '''  postfix = '.txt'                     #设置后缀    with open('test.txt') as myfile:     #with语句打开文件为myfile      while True:                      #while循环拿文件读出来          lines = myfile.readlines()   #拿所有的行一次性读取到列表中          if not lines: break          #没有则中断          for line in lines:           #遍历列表              file_out = str('_'.join(line.split()[:])) + postfix #得到01_CN_Chinese.txt文件名              open(file_out,'w').write(line)                      #write(line),将没行的文件写入新文件中 
[b]【例006】[/b]
[u]复制代码[/u] 代码如下:
#coding = gbk  ''''' #最终实现下面的过程 foos = [1.0, 2.0, 3.0, 4.0, 5.0] bars = [100, 200, 300, 400, 500]   1.0 [200, 300, 400, 500] 2.0 [100, 300, 400, 500] 3.0 [100, 200, 400, 500] 4.0 [100, 200, 300, 500] 5.0 [100, 200, 300, 400] #知识点 1. map函数的理解 2. 关键是切片函数的应用   '''    foos = [1.0, 2.0, 3.0, 4.0, 5.0]  bars = [100, 200, 300, 400, 500]    def func(foo):      index = foos.index(foo) #foo在foos中的索引,拿她取出来      print foo,bars[:][0:index] + bars[:][index+1:]      #该索引同样在bars中相同位置,在切片的时候拿它取出,并拼接这个切片      #大功告成!    print map(func,foos) 
[b]【例007】求 6! + 5! + 4! + 3! + 2! + 1![/b]
[u]复制代码[/u] 代码如下:
def factorial(n):      return reduce(lambda x,y: x* y, range(1,n+1))#求6!   print reduce(lambda x,y: x + y, [factorial(i) for i in range(1,6)]) #求6! + 5! + 4! + 3! + 2! + 1!
[b]【例008】 根据输入打印文件[/b]
[u]复制代码[/u] 代码如下:
import sys    helpinfo= ''''' This program prints files to the standard output. Any number of files can be specified. Options include: --[version|VERSION|V|v]: Prints the version number --[help   |HELP   |H|h]: Display the help '''    def readfile(filename):      try:          f = open(filename)          while True:              line = f.readline()              if not line:                  break              print line,      except:          print 'some error here'    if len(sys.argv) < 2:      print 'No action is needed!'      sys.exit()    if sys.argv[1].startswith('--'):      option = sys.argv[1][2:]      if option in ['version','v','V','VERSION']:          print 'Version 1.0'      elif option in ['h','H','help','HELP']:          print helpinfo      else:          print 'Unknown option.'      sys.exit()        else:      for filename in sys.argv[1:]:          readfile(filename) 
[b]【例009】函数中args的用法[/b]
[u]复制代码[/u] 代码如下:
def powersum(power,*args):      '''''Print each argument's power'''      total = 0      for item in args:          total += pow(item,power)      return total    print powersum(2,3,4)  # (3**2) + (4**2)  print powersum(2,10)   # 10**2  print powersum(2)      # 0**2 
[b]【例010】匿名函数作为返回值[/b]
[u]复制代码[/u] 代码如下:
def repeater(n):      print n      return lambda s: s*n    twice = repeater(2)    print twice('Hello')  print twice(5) 
[b]【例011】备份程序[/b]
[u]复制代码[/u] 代码如下:
#!/usr/bin/env python    import os,time  source     = ['/home/test/C','/home/test/shell']             #源文件目录  target_dir = '/home/test/python'                             #目标文件目录    today      = target_dir + time.strftime('%Y%m%d')            #  now        = time.strftime('%H%M%S')    if not os.path.exists(today):                                 #判断目录是否存在    os.mkdir(today)                                             #不存在的话则新建    print 'Successfully created directory', today    target     = today + os.sep + now + '.zip'                    #target文件格式  zip_cmd    = "zip -qr '%s' %s" % (target, ' '.join(source))   #-q:安静模式 -r递归模式  #等价于 zip -qr /home/test/python20141202/142151.zip /home/test/C /home/test/shell  if os.system(zip_cmd) == 0:     #判断命令是否成功执行,成功执行,返回0    print 'Successful back to:', target  else:                           #失败的话,打印信息    print 'Backup FAILED.'   
加comment的版本
[u]复制代码[/u] 代码如下:
#!/usr/bin/env python    import os,time    source     = ['/home/test/C','/home/test/shell']  target_dir = '/home/test/python'    today      = target_dir + time.strftime('%Y%m%d')  now        = time.strftime('%H%M%S')    comment    = raw_input('Enter comments here-->')   #要输入的comment  if len(comment) == 0:                              #如果没有comment    target = today + os.sep + now + '.zip'           #按照上面的操作执行  else:    target = today + os.sep + now + '_' + comment.replace(' ','_') + '.zip'  #如果有comment,     if not os.path.exists(today):    os.mkdir(today)    print 'The backup directory created!', today    zip_command = "zip -qr '%s' %s" % (target, ' '.join(source))    if os.system(zip_command) == 0:    print 'Scuccessful backup to', target  else:    print 'The backup FAILED'   
输出结果 :
[u]复制代码[/u] 代码如下:
# python backup_ver4.py Enter comments here-->add new example The backup directory created! /home/test/python20141202 Scuccessful backup to /home/test/python20141202/145130_add_new_example.zip
[b]【例012】将二进制数转为10进制数[/b]
[u]复制代码[/u] 代码如下:
def func(B):      I = 0      while B:          I = I * 2 + (ord(B[0])-ord('0'))          B = B[1:]      return I    b = raw_input('Enter binary here:')    print func(b) 
[b]【例013】将列表中排除重复项并将重复的项找出[/b]
[u]复制代码[/u] 代码如下:
def find_duplicate(lst):      tmp = []                               #临时变量,存放排除后的列表      for item in lst:                      if not item in tmp:                #将不在tmp变量找出              tmp.append(item)          else:              print 'The duplicate item is:', item      print 'After remove the duplicate item:',       return tmp    if __name__=='__main__':      test = input("Enter List here:")        #input技巧      print find_duplicate(test)  >>> Enter List here:[2,1,4,2] The duplicate item is: 2 After remove the duplicate item: [2, 1, 4]
[b]【例014】用Python中列表中append(),pop()函数实现简单的堆栈方法:后进先出[/b]
[u]复制代码[/u] 代码如下:
l = []  l.append(1)  l.append(2)  l.append(3)  print l  print l.pop()  print l.pop()  print l.pop() 
      [b]【例015】对列表中的单词按首字母排序[/b]
[u]复制代码[/u] 代码如下:
>>> words = ['apple','bat','bar','book','atom']  >>> tmp   = {}                #建个空字典    >>> for word in words:      letter = word[0]      #作为字典中的键      if letter not in tmp: #判断首字母是否存在于字典          tmp[letter] = [word]      #注意要添加[],很关键      else:          tmp[letter].append(word)  #如果键已经存在,值列表添加              >>> tmp  {'a': ['apple', 'atom'], 'b': ['bat', 'bar', 'book']} 
[b]【例016】对文件进行整理(除空格、TAB键、除#!&?等键),假如文本文件全为人名,并让首字母大写[/b]
[u]复制代码[/u] 代码如下:
  john black  Jerry!  &alice  TOm#  south carolina###  mr  smith? 
代码及输出结果如下:
[u]复制代码[/u] 代码如下:
import re    def clean(strings):      result = []      for value in strings:          value = value.strip()          value = re.sub('[#!&?]','',value)          value = value.title()          result.append(value)      return result    with open('data.txt','a+') as myfile:      lines = myfile.readlines()      for line in clean(lines):          print line  >>>   John Black  Jerry  Alice  Tom  South Carolina  Mr Smith 
[b]【例017】用while循环来判断某个数是否是质数[/b]
[u]复制代码[/u] 代码如下:
y = input('Enter a integer Here:')    x = y / 2    while x > 1:          if y % x == 0:          print y, 'has factor', x          break      x -= 1        else:      print y, 'is prime' 
[b]【例018】用while实现搜索某个字符串的功能[/b]
[u]复制代码[/u] 代码如下:
names = ['Tom','Alice','Wendy','Jerry','Bob','Smith']    while names:      if names[0] == 'Jerry':          print 'Hi,', names[0]          break      names = names[1:]        else:      print 'Not Found!'   
[b]【例019】对嵌套的序列进行处理[/b]
[u]复制代码[/u] 代码如下:
>>> T = ((1,2),(3,4),(5,6))  >>> for (a,b) in T:  ...   print a+100, b+200  ...  101 202  103 204  105 206 
[b]【例020】用for循环实现查找[/b]
[u]复制代码[/u] 代码如下:
source = ['sting',(3,4),100,0.1,[1,2]]  tests  = [(3,4),3.14]    for t in tests:             #先是遍历小循环      for s in source:        #再遍历外层循环          if s == t:              print t, 'Found it! '              break      else:                    #else语句的位置非常关键,          print t, 'Not Found!' 
等价于下面这种方式
[u]复制代码[/u] 代码如下:
source = ['sting',(3,4),100,0.1,[1,2]]  tests  = [(3,4),100,3.14]    for t in tests:      if t in source:          print t, 'Found it.'      else:          print t, 'Not found.' 
[b]【例021】用for循环来收集两个序列中相同的部分[/b]
[u]复制代码[/u] 代码如下:
seq1 = 'spam'  seq2 = 'suck'    res  = []  for s1 in seq1:      if s1 in seq2:          res.append(s1)    print res 
[b]【例022】隔个取出字符串[/b]
[u]复制代码[/u] 代码如下:
S = 'abcdefghijklmn'    for i in range(0,len(S),2):      print S[i],    #或者  print S[::2] 
[b]【例023】两个列表,列表中每个元素加100,然后与L1中对应元素相乘,形成列表,再对列表求和[/b]
[u]复制代码[/u] 代码如下:
L1 = [1,2,3,4]   L2 = [5,6,7,8] #L2每个元素加一百,105,106,107  #(5+100)*1 + (6+100)*2 + (100+7)*3 + (100+8)*4  # 合计: 1070  L3 = [x+100 for x in L2]  L4 = []    for (x,y) in zip(L1,L3):      L4.append(x*y)        print sum(L4)    #或者用下面精简方式,只是刚看到有点头痛!  print sum([x*y for x,y in [T for T in zip(L1,[x+100 for x in L2])]])
[b]【例024】对列表进行,合并,去重,取交集等操作[/b]
[u]复制代码[/u] 代码如下:
def func(seq1, seq2=None, opra=None):      res = []         if opra   == '-':          for item1 in seq1:              if item1 not in seq2:                  res.append(item1)                        elif opra == '&':          for item1 in seq1:              if item1 in seq2:                  res.append(item1)                        elif opra == '|':          tmp = seq1[:]          for item1 in seq2:              if item1 not in seq1:                  tmp.append(item1)          return tmp            elif opra == '^':            for i in seq1:              if i not in seq2:                  res.append(i)          for i in seq2:              if i not in seq1:                  res.append(i)                     return res            else:          print 'Need list as input!'        return res    L1 = [1,2,3,4]  L2 = [3,4,5,6]    print '[L1 - L2]:',func(L1,L2,'-')  print '[L1 & L2]:',func(L1,L2,'&')  print '[L1 | L2]:',func(L1,L2,'|')  print '[L1 ^ L2]:',func(L1,L2,'^')      def list_remove(seq):      res = []      for i in seq:          if i not in res:              res.append(i)      return res    L1 = [3,1,2,3,8]  print list_remove(L1)      def find_duplicate(seq):      res = []      for i in range(len(seq)):          if seq.count(seq[i]) >= 2:              print 'Found %s'% seq[i], 'The index is:', i              res.append(seq[i])      return res    L1 = [3,1,2,3,8]  print find_duplicate(L1) 
结果如下:
[u]复制代码[/u] 代码如下:
>>>   [L1 - L2]: [1, 2]  [L1 & L2]: [3, 4]  [L1 | L2]: [1, 2, 3, 4, 5, 6]  [L1 ^ L2]: [1, 2, 5, 6]  [3, 1, 2, 8]  Found 3 The index is: 0  Found 3 The index is: 3  [3, 3] 
[b]【例025】通过函数改变全局变量的三种方式[/b]
[u]复制代码[/u] 代码如下:
var = 99    def local():      var = 0    def glob1():      global var      var += 1    def glob2():      var = 0      import Learn      Learn.var += 1    def glob3():      var = 0      import sys      glob = sys.modules['Learn']      glob.var += 1    def test():      print var      local();glob1();glob2();glob3()      print var 
[b]【例026】求range(10)中每个元素的立方[/b]
[u]复制代码[/u] 代码如下:
def func():      res = []      for i in range(10):          res.append(lambda x, i=i: i ** x) #i=i这是关键,否则i默认记忆最后一个值:9      return res    >>> res = func()  >>> for i in range(10):      res[i](3)     0  1  8  27  64  125  216  343  512  729 
[b]【例027】求最小值[/b]
[u]复制代码[/u] 代码如下:
def min1(*args):      mini = args[0]      for arg in args[1:]:          if arg < mini:              mini = arg      return mini    def min2(first,*rest):      mini  = first      for arg in rest:          if arg < first:              mini = arg      return mini    def min3(*args):      res = list(args)      res.sort()      return res[0]    print min1('c','a','b')  print min2(3,1,4)  print min3(1,'a',78,'c')  def func(test, *args):      res = args[0]      for arg in args[1:]:          if test(arg, res):              res = arg      return res            def lessthan(x, y): return x < y  def morethan(x, y): return x > y    print func(lessthan, 4,3,1,2,9)  print func(morethan, 4,3,1,2,9) 
[b]【例028】求多个集合的交集及合集[/b]
[u]复制代码[/u] 代码如下:
def intersect(*args):      res = []      for x in args[0]:          for other in args[1:]:              if x not in other:                  break              else:                  res.append(x)      return set(res)        #去除重复的部分    print intersect('SPAM','SCAM','SLAM')        def union(*args):      res = []      for seq in args:          for item in seq:              if not item in res:                  res.append(item)      return res    print union('SA','SB','SC')  def intersect(*args):      res = []      for x in args[0]:          for other in args[1:]:              if x not in other:                  break              else:                  res.append(x)      #为了交互['S','S','A','A','M','M']      tmp = []      [tmp.append(i) for i in res if i not in tmp]      return tmp    print intersect('SCAM','SPAM','SLAM') 
[b]【例029】字典的拷贝及添加[/b]
[u]复制代码[/u] 代码如下:
def copyDict(old):      new = {}      for key in old:          new[key] = old[key]      return new    def addDict(d1,d2):      new = {}      for key in d1.keys():          new[key] = d1[key]      for key in d2:          new[key] = d2[key]      return new 
[b]【例030】求质数[/b]
[u]复制代码[/u] 代码如下:
def isPrime(y):      if y < 1:          print y, 'not prime'      else:          x = y // 2          while x>1:              if y % x == 0:                  print y, 'has factor', x                  break              x -= 1          else:              print y, 'is prime!' 
[b]【例031】比较多个值的大小[/b]
[u]复制代码[/u] 代码如下:
def min_max(func,*args):      res = args[0]      for arg in args[1:]:          if func(arg,res):              res = arg      return res    def min_func(x,y): return x < y  def max_func(x,y): return x > y    if __name__=='__main__':      print "The min value is:", min_max(min_func,4,3,2,1,7,6,9)      print "The max value is:", min_max(max_func,4,3,2,1,7,6,9)        # 输出结果:        >>>   The min value is: 1  The max value is: 9  
[b]【例032】写一个小函数实现内置函数dir的功能[/b]
[u]复制代码[/u] 代码如下:
#Filename: mydir.py    tag = 1    def listing(module):      if tag:          print '-'*30          print 'name:', module.__name__,'file:', module.__file__          print '-'*30        count = 0      for attr in module.__dict__.keys():          if attr[0:2] == '__':              print 'd) %s' % (count, attr)          else:              print getattr(module,attr)          count = count + 1        if tag:          print '-'*30          print module.__name__, 'has %d names.' % count          print '-'*30    if __name__=='__main__':      import mydir      listing(mydir) 
[b]【例033】求分数平均值[/b]
[u]复制代码[/u] 代码如下:
'''''Filename: grades.txt   求该文件中第二列的平均值 Jerry  78 Alice  45 Wendy 96 Tom    56 Bob   85 '''    temp = []  for line in open('grades.txt'):      a = line.strip().split()      if a:          temp.append(a[1])            #['78', '45', '96', '56', '85']  total = 0  for i in temp:      total += int(i)    print 'The total grade is:', total, 'The average is:', total/len(tmp)
[b]【例034】一个实际类的例子[/b]
[u]复制代码[/u] 代码如下:
class GenericDisplay:      def gatherAttrs(self):          attrs = 'n'          for key in self.__dict__:              attrs += 't%s=%sn' % (key, self.__dict__[key])          return attrs      def __str__(self):          return '<%s: %s>' % (self.__class__.__name__, self.gatherAttrs())            class Person(GenericDisplay):      def __init__(self, name, age):          self.name = name          self.age  = age      def lastName(self):          return self.name.split()[-1]      def birthDay(self):          self.age += 1    class Employee(Person):      def __init__(self, name, age, job=None, pay=0):          Person.__init__(self, name, age)          self.job = job          self.pay = pay      def birthDay(self):          self.age += 2      def giveRaise(self, percent):          self.pay *= (1.0 + percent)    if __name__ == '__main__':      bob = Person('Bob Smith', 40)      print bob      print bob.lastName()      bob.birthDay()      print bob        sue = Employee('Sue Jones', 44, job='dev', pay=100000)      print sue      print sue.lastName      sue.birthDay()      sue.giveRaise(.10)      print sue 
[b]【例035】根据给定的年月日以数字方式打印出日期(February 27th, 2015)[/b]
[u]复制代码[/u] 代码如下:
# coding = UTF-8  #根据给定的年月日以数字形式打印出日期  months = [      'January' ,      'February',      'March'   ,      'April'   ,      'May'     ,      'June'    ,      'July'    ,      'August'  ,      'September',      'October'  ,      'November' ,      'December'      ]  #以1~31的数字作为结尾的列表  endings = ['st','nd','rd'] + 17 * ['th'] +             ['st','nd','rd'] + 07 * ['th'] +                                     ['st']    year  = raw_input('Year: ')  month = raw_input('Month(1-12): ')  day   = raw_input('Day(1-31): ')    month_number = int(month)  day_number   = int(day)  #月份和天数减1来获得正确的索引  month_name   = months[month_number - 1]  ordinal      = day + endings[day_number - 1]    print month_name + ' ' + ordinal + ', ' + year    #输出结果  >>>   Year: 2015  Month(1-12): 2  Day(1-31): 27  February 27th, 2015 
[b]【例036】在居中的盒子里打印一条语句[/b]
[u]复制代码[/u] 代码如下:
sentence = raw_input("Sentence: ")    screen_width = 80  text_width   = len(sentence)  box_width    = text_width + 6  left_margin  = (screen_width - box_width) // 2    print  print ' '*left_margin + '+'  + '-'*(box_width-4) + '+'  print ' '*left_margin + '| ' + ' '*(text_width)  +' |'  print ' '*left_margin + '| ' +      sentence     +' |'  print ' '*left_margin + '| ' + ' '*(text_width)  +' |'  print ' '*left_margin + '+'  + '-'*(box_width-4) + '+'  print    #输出结果  >>>   Sentence: Welcome To Beijing!                               +---------------------+                             |                     |                             | Welcome To Beijing! |                             |                     |                             +---------------------+ 
[b]【例037】简单小数据库验证[/b]
[u]复制代码[/u] 代码如下:
database = [      ['Bob', '1234'],      ['Tom', '2345'],      ['Foo', '1478']      ]  usr = raw_input('Enter username: ')  pwd = raw_input('Enter password: ')    if [usr, pwd] in database:      print 'Access Granted!'  else:      print 'Access Deny!' 
【例038】使用给定的宽度打印格式化后的价格列表
[u]复制代码[/u] 代码如下:
width = input('Please enter width: ')    price_width = 10  item_width  = width - price_width    header_format = '%-*s%*s'  format        = '%-*s%*.2f'    print '=' * width    print header_format % (item_width, 'Item', price_width, 'Price')    print '-' * width    print format % (item_width, 'Apples', price_width, 0.4)  print format % (item_width, 'Sweets', price_width, 0.5)  print format % (item_width, 'Pepper', price_width, 12.94)  print format % (item_width, 'Tender', price_width, 42)    print '-' * width 
输出格式:
[u]复制代码[/u] 代码如下:
>>>   Please enter width: 30  ==============================  Item                     Price  ------------------------------  Apples                    0.40  Sweets                    0.50  Pepper                   12.94  Tender                   42.00  ------------------------------ 
[b]【例039】遍历两个对应列表[/b]
[u]复制代码[/u] 代码如下:
names   = ['Alice', 'Bob' , 'Cherry', 'David']  numbers = ['0000' , '1111', '2222'  , '3333' ]    for index,name in enumerate(names):      print '%-7s=> %s' % (name, numbers[index])    #输出结果  >>>   Alice  => 0000  Bob    => 1111  Cherry => 2222  David  => 3333 
当然也可以采用如下通常的做法:
[u]复制代码[/u] 代码如下:
names = ['Alice','Bob', 'John', 'Fred']  ages  = [27, 23, 31, 29]  for i in range(len(ages)):      print names[i],' is ', ages[i], ' years old!'    #输出结果:  >>>   Alice  is  27  years old!  Bob  is  23  years old!  John  is  31  years old!  Fred  is  29  years old! 
[b]【例040】对存储在小字典中数据进行查询[/b]
[u]复制代码[/u] 代码如下:
peoples = {      'Alice':{                'phone'    : '0948',                'address'  : 'aaaa'              },      'Wendy':{                'phone'    : '4562',                'address'  : 'bbbb'              },      'David':{                'phone'    : '4562',                'address'  : 'bbbb'              }      }  #字典使用人名作为键。每个人用另外一个字典来表示,其键'phone'和'addr'分别表示他们的电话号码和地址      labels = {      'phone'   : 'phone number',      'address' : 'address'      }  #针对电话号码和地址使用描述性标签,会在打印输出时用到。  key = ''  name = raw_input('Name: ')      if name in peoples:      request = raw_input('Enter (p) or (a): ')      if request == 'p':          key = 'phone'      elif request == 'a':          key = 'address'      else:          print 'Please input p(phone) an a(address)!'      print "%s's %s is %s" % (name, labels[key],peoples[name][key])    else:      print 'Not Found!' 
或者使用字典的get()方法,更好些。完整代码如下:
[u]复制代码[/u] 代码如下:
#字典使用人名作为键。每个人用另外一个字典来表示,其键'phone'和'addr'分别表示他们的电话号码和地址   peoples = {        'Alice':{                  'phone'    : '0948',                  'address'  : 'aaaa'                },        'Wendy':{                  'phone'    : '4562',                  'address'  : 'bbbb'                },        'David':{                  'phone'    : '4562',                  'address'  : 'bbbb'                }        }           #针对电话号码和地址使用描述性标签,会在打印输出时用到。     labels = {        'phone'   : 'phone number',        'addr'    : 'address'        }      name = raw_input('Name: ')  #查找电话号码还是地址?  request = raw_input('Phone number (p) or address (a)? ')    #查找正确的键  key = request     #如果请求即不是p也不是a  if request == 'p': key = 'phone'  if request == 'a': key = 'addr'    #使用get()函数提供默认值  person = peoples.get(name,{})  label  = labels.get(key, key)  result = person.get(key, 'not available')    print "%s's %s is %s." % (name, label, result) 
[b]【例041】字典格式化字符串例子[/b]
[u]复制代码[/u] 代码如下:
template='''''<html> <head><title></title></head> <h1>%(title)s</h1> <p1>%(text)s</p1> <body></body> </html>'''    data = {'title':'My Home Page','text':'Welcome to my home page!'}  print template % data    #输出结果:  >>>   <html>  <head><title></title></head>  <h1>My Home Page</h1>  <p1>Welcome to my home page!</p1>  <body></body>  </html> 
[b]【例042】需找100以内的最大平方数[/b]
[u]复制代码[/u] 代码如下:
from math import sqrt  #从100开始往下找,找到即停止,最大为: 81  for n in range(99, 0, -1):      root = sqrt(n)      if root == int(root):          print n          break 
[b]【例043】用while/True, break控制输入[/b]
[u]复制代码[/u] 代码如下:
while True: #一直进行下去,除非break      word = raw_input('Please Enter a word: ')      if not word: break   #输入为空的话,中断循环      print 'The word was: ' + word 
[b]【例044】将两个列表中首字母相同的提取出来[/b]
[u]复制代码[/u] 代码如下:
#将两个列表中首字母相同的罗列在一起  girls = ['alice', 'bernice', 'clarice']  boys  = ['chris', 'arnold', 'bob']  #列表推导:   print [b+'+'+g for b in boys for g in girls if b[0] == g[0]]  #输出结果:  >>>   ['chris+clarice', 'arnold+alice', 'bob+bernice'] 
[b]【例045】斐波那契数列求指定数字的列表[/b]
[u]复制代码[/u] 代码如下:
def fibs(x):      fibs = [0, 1] # 初始值      for i in range(x):          # fibs[-2]+fibs[-1]:最新一个值是前面两个值之和          # 并用append方法将其添加在后面          fibs.append(fibs[-2]+fibs[-1])       print fibs        if __name__=='__main__':      num  = input('How many Fibonacci numbers do you want? ')      fibs(num) 
或者用普通方法实现:
[u]复制代码[/u] 代码如下:
>>> def fib(max):      n, a, b  = 0, 0, 1      tmp_list = []      while n < max:          tmp_list.append(a)          a, b = b, a+b          n += 1      return tmp_list    >>> fib(8)  [0, 1, 1, 2, 3, 5, 8, 13] 
[b]【例046】写一个自定义列表类,让它支持尽可能多的支持操作符号[/b]
[u]复制代码[/u] 代码如下:
class MyList:      def __init__(self, start):          self.wrapped = [] # Make sure it's a list here          for x in start:              self.wrapped.append(x)      def __add__(self, other):          return MyList(self.wrapped + other)      def __mul__(self, time):          return MyList(self.wrapped * time)      def __getitem__(self, offset):          return self.wrapped[offset]      def __len__(self):          return len(self.wrapped)      def __getslice__(self, low, high):          return MyList(self.wrapped[low:high])      def append(self, node):          self.wrapped.append(node)      def __getattr__(self, name): # Other members: sort/reverse/etc          return getattr(self.wrapped, name)      def __repr__(self):          return repr(self.wrapped)    if __
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部