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)) <span style="font-family: Arial, Helvetica, sans-serif;">#求6!</span>

print reduce(lambda x,y: x + y, [factorial(i) for i in range(1,6)]) <span style="font-family: Arial, Helvetica, sans-serif;">#求6! + 5! + 4! + 3! + 2! + 1!</span>

【例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=%s\n' % (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
时间: 2024-11-07 00:58:49

Python小程序代码片的相关文章

福利贴——爬取美女图片的Java爬虫小程序代码

自己做的一个Java爬虫小程序 废话不多说,先上图. 文件夹命名是用标签缩写,如果大家看得不顺眼可以等下载完成后手动改一下,比如像有强迫症的我一样... 这是挂了一个晚上下载的总大小,不过还有很多因为一些问题没有遍历下载到,而且会产生很多空文件,最下面我附带了一个递归删除空文件夹的小程序代码. 接下来是文件夹内部~ 图片存放位置默认为d:\picture,可在程序中更改,main函数的开头就是,有注释.爬取的网站为http://www.mmonly.cc/,大家有更好的资源网站可以私我. 爬虫源

python小程序之一

来个Python小程序 #输入年月日确定这个日期是一年中的第多少天# -*- coding: UTF-8 -*-y=int(raw_input("请输入年:"))m=int(raw_input("请输入月份:"))d=int(raw_input("请输入日期:"))a=(0,31,28,31,30,31,30,31,31,30,31,30,31)if m>12: raise ValueError("输入月份错误")if

Python 小程序,对文件操作及其他

下面是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等.比如说,从文件中读取一行数据,分别存放于列表中,再对列表进行操作,如去掉里面的重复项,排序等操作. 常见对文件中行进行操作: #这里列出两个常用的方法 方法01: 一次性读取所有行 >>> f = file('1.txt') >>> while 1: lines = f.readlines() if not lines: break for line in lines: print l

Python 小程序,对文件操作及其它

以下是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等.比方说,从文件里读取一行数据.分别存放于列表中,再对列表进行操作.如去掉里面的反复项.排序等操作. 常见对文件里行进行操作: #这里列出两个经常使用的方法 方法01: 一次性读取全部行 >>> f = file('1.txt') >>> while 1: lines = f.readlines() if not lines: break for line in lines: print

第一个python小程序,2进制转10进制

#Bin to Dec #my first python programe n = c = itm = 0 a = raw_input('please input Binary number:\n') for n in range(0,len(a)):    b = a[n:n+1] #   print 'n is', n #   print 'b is',b #   print 'len',len(a[n:])       if b == '1':    c = 2**(len(a[n:])-

Python小程序,读取ACCESS数据库,然后list数据

曾经做过的一个Python小程序,读取ACCESS数据库,然后list数据 # -*- coding: cp936 -*-import wximport wx.libimport sys,glob,randomimport win32com.clientreload(sys)sys.setdefaultencoding('utf-8')class DemoFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1,u"安

共享链小程序代码开发

一.共享链小程序代码开发.共享链小程序源码搭建.共享链小程序软件开发(陈丽:136电3226微1730) 二.对商业模式发展趋势的认同IDENTIFICATION OF TRENDS IN BUSINESS MODELS1.消费支付的变化:支付方式经过纸币,银行卡,网上支付,到现在的移动支付2.共享经济颠覆性经济模式:摩拜单车.滴滴打车.Airbnb.云计算资源分享 三.共享链小程序代码(陈丽:136电3226微1730) <html lang="en">   <he

微信小程序代码片段

微信小程序代码片段是一种可分享的小项目,可用于分享小程序和小游戏的开发经验.展示组件和 API 的使用.复现开发问题等等.分享代码片段会得到一个链接,所有拥有此分享链接的人可以在工具中导入此代码片段.如果网页可点击的链接指向的是分享链接,那么点击链接也会自动打开工具进入代码片段导入页. 创建代码片段 在工具选择项目的界面中,右侧可以选择代码片段页卡,查看所有本地代码片段,在右下角可以点击创建代码片段. 创建代码片段需要填入代码片段名称.本地存放目录.AppID 不是必填项,如果需要演示依赖 Ap

Python小程序练习二之装饰器小例子

Python小程序练习二之装饰器小例子 装饰器: 装饰器实际上就是为了给某程序增添功能,但该程序已经上线或已经被使用,那么就不能大批量的修改源代码,这样是不科学的也是不现实的,因为就产生了装饰器,使得其满足: 1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 那么根据需求,同时满足了这两点原则,这才是我们的目的. 装饰器的原则组成: < 函数+实参高阶函数+返回值高阶函数+嵌套函数+语法糖 = 装饰器 > 错误例子: 1.1Decorators.py 1 # The aut