手机
当前位置:查字典教程网 >脚本专栏 >python >自己使用总结Python程序代码片段
自己使用总结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) < 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)

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

0

1

8

27

64

125

216

343

512

729

【例027】求最小值

复制代码 代码如下:

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)

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

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

【例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=%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

【例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='''''<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>

【例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 < 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]

【例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[2]

print x[1:]

print x + ['eggs']

print x * 3

x.append('a')

x.sort()

for c in x:

print c,

# 输出结果如下:

>>>

['s', 'p', 'a', 'm']

a

['p', 'a', 'm']

['s', 'p', 'a', 'm', 'eggs']

['s', 'p', 'a', 'm', 's', 'p', 'a', 'm', 's', 'p', 'a', 'm']

a a m p s

【例047】用urllib模块来批量下载图片

复制代码 代码如下:

import re

import urllib

def getHtml(url):

page = urllib.urlopen(url)

html = page.read()

return html

def getImg(html):

reg = r'src="(.*" width'

imgre = re.compile(reg)

imgList = re.findall(imgre, html)

x = 0

for imgurl in imgList:

urllib.urlretrieve(imgurl, '%s.img' % x) # urlretrieve()下载图片

x += 1

html = getHtml("http://www.w3cschool.cc/")

print getImg(html)

【例048】用PyQt4实现简单的按钮事件(Hello,World!)

复制代码 代码如下:

# -*- coding: utf-8 -*-

import sys

from PyQt4 import QtCore, QtGui

# 自定义的窗口类

class TestWindow(QtGui.QWidget):

# 窗口初始化

def __init__(self, parent = None):

super(TestWindow, self).__init__(parent)

self.setWindowTitle(u'胡桃夹子')

# 创建按钮

self.pushButton = QtGui.QPushButton(u'测试按钮')

# 创建文本框

self.textEdit = QtGui.QTextEdit()

# 创建垂直布局

layout = QtGui.QVBoxLayout()

# 将控件添加到布局中

layout.addWidget(self.textEdit)

layout.addWidget(self.pushButton)

# 设置窗口布局

self.setLayout(layout)

# 设置按钮单击动作

self.pushButton.clicked.connect(self.sayHello)

# 按钮动作处理

def sayHello(self):

self.textEdit.setText('Hello World!')

# 程序主入口

if __name__=='__main__':

app = QtGui.QApplication(sys.argv)

mainWindow = TestWindow()

mainWindow.show()

sys.exit(app.exec_())

【例049】用python解析文本的一个例子

假如配置文件如下, 要确保配置文件行为tablename后面的level中值给读取出来

复制代码 代码如下:

#FileName: data.conf

(tablename "A__employee__id.sql")

(userid "000001")

(number "100001")

(level "P1")

(tablename "B__employee__id.sql")

(userid "100001")

(number "100000")

(level "P2")

(tablename "C_other_table.sql")

(userid "000001")

(number "100001")

(level "P2")

(tablename "C__employee__table.sql")

(userid "000001")

(number "100001")

(level "P3")

代码如下:

复制代码 代码如下:

def parse_File(filename):

tmp = []

fh = open(filename)

line = fh.readline()

flag = 0

while line:

if "tablename" in line and "__employee__" in line:

count = 0

flag = 1

if flag == 1:

count += 1

if count == 4 and "level" in line:

value = line.split(r'"')[1]

tmp.append(value)

line = fh.readline()

return tmp

if __name__ == '__main__':

print parse_File('data.conf')

【自己使用总结Python程序代码片段】相关文章:

python发腾讯微博代码分享

用python实现批量重命名文件的代码

Python中删除文件的程序代码

使用 Python 获取 Linux 系统信息的代码

盘点提高 Python 代码效率的方法

python 简易计算器程序,代码就几行

使用python 获取进程pid号的方法

在漏洞利用Python代码真的很爽

复制粘贴功能的Python程序

python远程登录代码

精品推荐
分类导航