目次
%(title)s
My Home Page
ホームページ バックエンド開発 Python チュートリアル 自己使用总结Python程序代码片段

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

Jun 10, 2016 pm 03:11 PM
Pythonプログラム 代码片段

用于记录自己写的,或学习期间看到的不错的,小程序,持续更新......
****************************************************************
【例001】计算:1-2+3-4..+199-200值

复制代码 代码如下:

#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 

【例002】将两个文件中相同的部分,写到一个文件中

复制代码 代码如下:

#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() 

【例003】反向读取文件
假如要读取的test.txt文件内容如下: 

复制代码 代码如下:

Python 
Perl 
Java 
Shell 

实现代码:
复制代码 代码如下:

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() 

输出结果: 
复制代码 代码如下:

Shell 
Java 
Perl 
Python 

【例004】 往文件中所有添加指定的前缀

比如文中: print是一个函数

文本文件强制二进制编码
就变成了下面的

复制代码 代码如下:

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('%02d'%(i) + '.Python 3.0:  #' + line)#字符串格式化及拼接技巧 
 
f_r.close()   #关闭打开的文件句柄 
f_w.close()   

【例005】

复制代码 代码如下:

#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),将没行的文件写入新文件中 

【例006】

复制代码 代码如下:

#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) 

【例007】求 6! + 5! + 4! + 3! + 2! + 1!

复制代码 代码如下:

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!

【例008】 根据输入打印文件

复制代码 代码如下:

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)     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) 

【例009】函数中args的用法

复制代码 代码如下:

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 

【例010】匿名函数作为返回值

复制代码 代码如下:

def repeater(n): 
    print n 
    return lambda s: s*n 
 
twice = repeater(2) 
 
print twice('Hello') 
print twice(5) 

【例011】备份程序
复制代码 代码如下:

#!/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的版本

复制代码 代码如下:

#!/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' 
 

输出结果 :

复制代码 代码如下:

# 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

【例012】将二进制数转为10进制数

复制代码 代码如下:

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) 

【例013】将列表中排除重复项并将重复的项找出
复制代码 代码如下:

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]

【例014】用Python中列表中append(),pop()函数实现简单的堆栈方法:后进先出

复制代码 代码如下:

l = [] 
l.append(1) 
l.append(2) 
l.append(3) 
print l 
print l.pop() 
print l.pop() 
print l.pop() 

     
【例015】对列表中的单词按首字母排序
复制代码 代码如下:

>>> 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']} 

【例016】对文件进行整理(除空格、TAB键、除#!&?等键),假如文本文件全为人名,并让首字母大写

复制代码 代码如下:

  john black 
Jerry! 
&alice 
TOm# 
south carolina### 
mr  smith? 

代码及输出结果如下:
复制代码 代码如下:

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 

【例017】用while循环来判断某个数是否是质数

复制代码 代码如下:

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' 

【例018】用while实现搜索某个字符串的功能
复制代码 代码如下:

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!' 
 

【例019】对嵌套的序列进行处理

复制代码 代码如下:

>>> T = ((1,2),(3,4),(5,6)) 
>>> for (a,b) in T: 
...   print a+100, b+200 
... 
101 202 
103 204 
105 206 

【例020】用for循环实现查找
复制代码 代码如下:

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!' 

等价于下面这种方式

复制代码 代码如下:

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.' 

【例021】用for循环来收集两个序列中相同的部分

复制代码 代码如下:

seq1 = 'spam' 
seq2 = 'suck' 
 
res  = [] 
for s1 in seq1: 
    if s1 in seq2: 
        res.append(s1) 
 
print res 

【例022】隔个取出字符串

复制代码 代码如下:

S = 'abcdefghijklmn' 
 
for i in range(0,len(S),2): 
    print S[i], 
 
#或者 
print S[::2] 

【例023】两个列表,列表中每个元素加100,然后与L1中对应元素相乘,形成列表,再对列表求和

复制代码 代码如下:

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])]])

【例024】对列表进行,合并,去重,取交集等操作

复制代码 代码如下:

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) 

结果如下:

复制代码 代码如下:

>>>  
[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] 

【例025】通过函数改变全局变量的三种方式

复制代码 代码如下:

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 

【例026】求range(10)中每个元素的立方

复制代码 代码如下:

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)    



27 
64 
125 
216 
343 
512 
729 

【例027】求最小值

复制代码 代码如下:

def min1(*args): 
    mini = args[0] 
    for arg in args[1:]: 
        if arg             mini = arg 
    return mini 
 
def min2(first,*rest): 
    mini  = first 
    for arg in rest: 
        if arg             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 def morethan(x, y): return x > y 
 
print func(lessthan, 4,3,1,2,9) 
print func(morethan, 4,3,1,2,9) 

【例028】求多个集合的交集及合集

复制代码 代码如下:

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') 

【例029】字典的拷贝及添加

复制代码 代码如下:

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 

【例030】求质数

复制代码 代码如下:

def isPrime(y): 
    if y         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!' 

【例031】比较多个值的大小

复制代码 代码如下:

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 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  

【例032】写一个小函数实现内置函数dir的功能

复制代码 代码如下:

#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 '%02d) %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) 

【例033】求分数平均值

复制代码 代码如下:

'''''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)

【例034】一个实际类的例子

复制代码 代码如下:

class GenericDisplay: 
    def gatherAttrs(self): 
        attrs = '\n' 
        for key in self.__dict__: 
            attrs += '\t%s=%s\n' % (key, self.__dict__[key]) 
        return attrs 
    def __str__(self): 
        return '' % (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 

【例035】根据给定的年月日以数字方式打印出日期(February 27th, 2015)

复制代码 代码如下:

# 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 

【例036】在居中的盒子里打印一条语句

复制代码 代码如下:

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! | 
                           |                     | 
                           +---------------------+ 

【例037】简单小数据库验证

复制代码 代码如下:

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】使用给定的宽度打印格式化后的价格列表

复制代码 代码如下:

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 

输出格式:

复制代码 代码如下:

>>>  
Please enter width: 30 
============================== 
Item                     Price 
------------------------------ 
Apples                    0.40 
Sweets                    0.50 
Pepper                   12.94 
Tender                   42.00 
------------------------------ 

【例039】遍历两个对应列表

复制代码 代码如下:

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 

当然也可以采用如下通常的做法:

复制代码 代码如下:

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! 

【例040】对存储在小字典中数据进行查询

复制代码 代码如下:

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()方法,更好些。完整代码如下:

复制代码 代码如下:

#字典使用人名作为键。每个人用另外一个字典来表示,其键'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) 

【例041】字典格式化字符串例子

复制代码 代码如下:

template='''''

%(title)s


%(text)s

''' 
 
data = {'title':'My Home Page','text':'Welcome to my home page!'} 
print template % data 
 
#输出结果: 
>>>  
 
 

My Home Page

 
Welcome to my home page! 
 
 

【例042】需找100以内的最大平方数

复制代码 代码如下:

from math import sqrt 
#从100开始往下找,找到即停止,最大为: 81 
for n in range(99, 0, -1): 
    root = sqrt(n) 
    if root == int(root): 
        print n 
        break 

【例043】用while/True, break控制输入

复制代码 代码如下:

while True: #一直进行下去,除非break 
    word = raw_input('Please Enter a word: ') 
    if not word: break   #输入为空的话,中断循环 
    print 'The word was: ' + word 

【例044】将两个列表中首字母相同的提取出来
复制代码 代码如下:

#将两个列表中首字母相同的罗列在一起 
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'] 

【例045】斐波那契数列求指定数字的列表

复制代码 代码如下:

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) 

或者用普通方法实现:

复制代码 代码如下:

>>> def fib(max): 
    n, a, b  = 0, 0, 1 
    tmp_list = [] 
    while n         tmp_list.append(a) 
        a, b = b, a+b 
        n += 1 
    return tmp_list 
 
>>> fib(8) 
[0, 1, 1, 2, 3, 5, 8, 13] 

【例046】写一个自定义列表类,让它支持尽可能多的支持操作符号

复制代码 代码如下:

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 __name__ == '__main__': 
    x = MyList('spam') 
    print x 
    print x
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

notepad++でPythonプログラムを実行する方法 notepad++でPythonプログラムを実行する方法 Apr 08, 2024 am 03:24 AM

Notepad++ を使用して Python プログラムを実行するには、次の手順が必要です: 1. Python プラグインをインストールする; 2. Python ファイルを作成する; 3. 実行オプションを設定する; 4. プログラムを実行する。

PyCharm の使用法チュートリアル: 操作の実行方法を詳しく説明します PyCharm の使用法チュートリアル: 操作の実行方法を詳しく説明します Feb 26, 2024 pm 05:51 PM

PyCharm は非常に人気のある Python 統合開発環境 (IDE) であり、Python 開発をより効率的かつ便利にするための豊富な機能とツールを提供します。この記事では、PyCharm の基本的な操作方法を紹介し、読者がすぐに使い始めてツールの操作に習熟できるように、具体的なコード例を示します。 1. PyCharm をダウンロードしてインストールします。 まず、PyCharm 公式 Web サイト (https://www.jetbrains.com/pyc) にアクセスする必要があります。

PyCharm 高度なチュートリアル: PyInstaller を使用してコードを EXE 形式にパッケージ化する PyCharm 高度なチュートリアル: PyInstaller を使用してコードを EXE 形式にパッケージ化する Feb 20, 2024 am 09:34 AM

PyCharm は、開発者の効率向上に役立つ豊富な機能とツールを提供する強力な Python 統合開発環境です。その中でも、PyInstaller は、Python コードを実行可能ファイル (EXE 形式) にパッケージ化して、Python 環境のないマシンでの実行を容易にする、一般的に使用されるツールです。この記事では、PyCharm で PyInstaller を使用して Python コードを EXE 形式にパッケージ化し、特定の

PyCharm Community Edition は十分なプラグインをサポートしていますか? PyCharm Community Edition は十分なプラグインをサポートしていますか? Feb 20, 2024 pm 04:42 PM

PyCharm Community Edition は十分なプラグインをサポートしていますか?特定のコード例が必要 ソフトウェア開発の分野で Python 言語がますます広く使用されるようになるにつれて、プロ仕様の Python 統合開発環境 (IDE) として PyCharm が開発者に好まれています。 PyCharmはプロフェッショナル版とコミュニティ版の2つのバージョンに分かれており、コミュニティ版は無料で提供されますが、プラグインのサポートがプロフェッショナル版に比べて制限されています。そこで問題は、PyCharm Community Edition は十分なプラグインをサポートしているかということです。この記事では、具体的なコード例を使用して、

Llama3が突然やってくる!オープンソース コミュニティが再び沸騰: GPT4 レベルのモデルに無料でアクセスできる時代が到来 Llama3が突然やってくる!オープンソース コミュニティが再び沸騰: GPT4 レベルのモデルに無料でアクセスできる時代が到来 Apr 19, 2024 pm 12:43 PM

ラマ3が登場!先ほどMetaの公式サイトが更新され、Llamaの380億バージョンと700億パラメータのバージョンが公式から発表されました。そして、それは発売後のオープンソース SOTA です。メタ公式データは、Llama38B および 70B バージョンがそれぞれのパラメーター スケールですべての対戦相手を上回っていることを示しています。 8B モデルは、MMLU、GPQA、HumanEval などの多くのベンチマークで Gemma7B および Mistral7BInstruct を上回ります。 70B モデルは人気のクローズドソース フライド チキン Claude3Sonnet を超え、Google の GeminiPro1.5 と行ったり来たりしています。 Huggingface のリンクが公開されるとすぐに、オープンソース コミュニティは再び興奮しました。目の鋭い盲目の学生たちもすぐに発見した

Pythonプログラムの開発プロセス Pythonプログラムの開発プロセス Apr 20, 2024 pm 09:22 PM

Python プログラムの開発プロセスには、次の手順が含まれます。 要件分析: ビジネス ニーズとプロジェクトの目標を明確にします。設計: アーキテクチャとデータ構造を決定し、フローチャートを作成するか、設計パターンを使用します。コードの記述: コーディング規約とドキュメントのコメントに従って、Python でプログラムします。テスト: 単体テストと統合テストを作成し、手動テストを実施します。レビューとリファクタリング: コードをレビューして欠陥を見つけ、読みやすさを向上させます。デプロイ: コードをターゲット環境にデプロイします。メンテナンス: バグを修正し、機能を改善し、更新を監視します。

Flask のインストールと構成のチュートリアル: Python Web アプリケーションを簡単に構築するツール Flask のインストールと構成のチュートリアル: Python Web アプリケーションを簡単に構築するツール Feb 20, 2024 pm 11:12 PM

Flask のインストールと構成チュートリアル: Python Web アプリケーションを簡単に構築するためのツール、特定のコード サンプルが必要です はじめに: Python の人気が高まるにつれ、Web 開発は Python プログラマーにとって必要なスキルの 1 つになりました。 Python で Web 開発を実行するには、適切な Web フレームワークを選択する必要があります。数ある Python Web フレームワークの中でも、Flask はシンプルで使いやすく柔軟なフレームワークとして開発者に好まれています。この記事ではFlaskフレームワークのインストールについて紹介します。

Python GIL の入門: グローバル インタープリター ロックを理解して使用する方法 Python GIL の入門: グローバル インタープリター ロックを理解して使用する方法 Feb 27, 2024 am 09:10 AM

ギルとは何ですか? GIL は Global Interpreter Lock の略で、Python インタプリタの重要な概念です。 GIL は、Python インタープリターが一度に 1 つのスレッドのみを実行できるようにします。これは、常に 1 つのスレッドだけが Python バイトコードを実行できることを意味します。他のスレッドは、実行を続行する前に、GIL が使用可能になるまで待機する必要があります。 GILはどのように機能しますか? GIL は C で書かれたロックで、Python インタープリター内にあります。スレッドが Python バイトコードを実行したい場合は、まず GIL を取得する必要があります。 GIL がすでに別のスレッドによって保持されている場合、そのスレッドは実行を続行する前に GIL が使用可能になるまで待機する必要があります。 GIL は Python プログラムにどのような影響を与えますか? Python の GIL

See all articles