python实例

1. 两个有序数列合并为1个有序数列

# -*- coding:utf-8 -*-
#两个有序数列合并为1个有序数列
str1 = [1,2,5,7,9]
str2 = [2,3,4,4.1,4.2,4.3,4.4]
def merge(str1,str2):
    merge_str = []
    len1 = len(str1)
    len2 = len(str2)
    i = 0
    j = 0
    while i < len1 and j < len2:
        if str1[i] <= str2[j]:
            merge_str.append(str1[i])
            i +=1
        else:
            merge_str.append(str2[j])
            j +=1
    if i < len1:
        for z in range(i+1,len1):
            merge_str.append(str1[z])
    if j < len2:
        for z in range(j+1,len2):
            merge_str.append(str2[z])
    return merge_str
print merge(str1,str2)

2.字典和列表读取速度测试

# coding:utf-8

#字典和列表的区别,列表是根据偏移量来读取的,字典是根据键的Hash来读取的

import time

testDict = {}

testList = []

for i in range(10000000):

    n = str(i)

    testDict[n] = i

    testList.append(n)

startTime = time.time()

if '1002231' in testDict:

    print 'yes'

print time.time()-startTime

startTime = time.time()

if '1002231' in testList:

    print 'yes'

print time.time()-startTime

 

3.冒泡排序

冒泡排序原理: 每一趟只能将一个数归位, 如果有n个数进行排序,只需将n-1个数归位, 也就是说要进行n-1趟操作(已经归位的数不用再比较)

 

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

def sort(num):

    for i in range(len(num)-1):       #负责设置冒泡排序进行的次数

        for j in range(len(num)-1-i):   #j为列表下标

            if num[j] > num[j+1]:

                num[j],num[j+1] = num[j+1],num[j]

    return num



num1 = [3,2,1,6,1]

print sort(num1)

 

4.倒叙输出原字符串

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

str1 = "python"

new_str = []

for i in range(len(str1)-1,-1,-1):

    new_str.append(str1[i])

print ' '.join(new_str)

#print new_str

 

5.统计字符串中出现最多的字符

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

def count(str1):
    Dic = {}
    maxnum = 0
    for i in str1:
        if i in Dic:
            Dic[i] = Dic[i]+1
        else:
            Dic.setdefault(i,1)
    for key,value in Dic.items():
        if Dic[key] > maxnum:
            maxnum = Dic[key]
            letter = key
    return letter,maxnum

str1 = "pythonpp"
print count(str1)

 

6.遍历指定路径下的所有文件

# -*- coding:utf-8 -*-
import os
# 枚举dirPath目录下的所有文件
# os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
# top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)
# root 所指的是当前正在遍历的这个文件夹的本身的地址(所有的根地址)
# dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
# files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
def main(fileDir):
    for root, dirs, files in os.walk(fileDir):
        print "root:" + root
        for dir in dirs:
            print(os.path.join(root, dir))
        for file in files:
            print(os.path.join(root, file))

if __name__ == '__main__':
    file = r"E:\A"
    print main(file)

7.continue和break

#-*- coding:utf-8 -*-
i = 0
while i < 6:
    i +=1
    for j in range(4):
        #print j,
        # print "j","=",j
        if j == 2:
            break     #彻底跳出循环
        print "j","=",j
    for k in range(4):
        if k == 2:
            continue     #略下本次循环的剩余内容,直接进入下一次循环
        #print  k,
        print  "k","=",k
    if i > 3:
        break          #当I>3,跳出,后续的i不再输出
    #print i,
    print "i","=",i

 

8.求和运算(奇数和、偶数和)

#-*- coding:utf-8 -*-
sum = 0
for i in range(1,101):
    sum = sum + i
print sum

sum1 = 0
for i in range(1,101,2):
    sum1 = sum1 + i
print sum1

sum2 = 0
for i in range(0,101,2):
    sum2 = sum2 + i
print sum2

 

9. join()方法

 join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

s = ["apple","pear","orange"]
fruit = ".".join(s)
print fruit

 

返回结果:

apple.pear.orange

10.输入多行内容,并将输入结果写入到指定文件

#-*- coding:utf-8 -*-
#os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
import os
def WriteFile(filename):
    fp = open(filename,"a")
    print "\r请输入多行文字","(输入.号回车保存)"
    while True:
        content = raw_input("content:")
        if content == ".":
            break
        else:
            fp.write("%s%s" %(content,os.linesep))
    fp.close()

if __name__ == "__main__":
    WriteFile(r"F:\AONE\test.txt")

 

11.读写文件

#-*- coding:utf-8 -*-
spath=r"F:\AONE\test.txt"
f=open(spath,"w")
f.write("First line 1.\n")
f.writelines("First line 2.\n")
f.close()

f=open(spath,"r")
lines = f.readlines()
for line in lines:
    print line.strip()
# for line in f:
#     print("每一行的数据是:%s" %line)
f.close()

 

12.魔法方法

构造方法: __init__,对于子类的构造方法,需要调用父类的构造方法,有以下两种调用方式:

#-*- coding:utf-8 -*-
class bird:
    def __init__(self):
        self.hungry = False
    def eat(self):
        if self.hungry:
            print 'Aaaaa...'
            self.hungry = False
        else:
            print 'No,thanks!'

class songbird(bird):
    def __init__(self):  #如果重写了构造方法,需要调用父类的构造方法
        #(1)方法1:未绑定方法,通过类名调用,将self传递过去
        bird.__init__(self)
        #(2)#方法2:super函数,参数类和对象做参数,再调用父类init函数
        super(SongBird, self).__init__()
        self.sound = 'Squawk!'

    def sing(self):
        print self.sound
if __name__ == "__main__":
    A = songbird()
    print A.sing()
    print A.eat()

 

13.简单的数据库应用程序(shelve)

#-*- coding:utf-8 -*-
import sys,shelve

'''

shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写:key必须为字符串,而值可以是

python所支持的数据类型

'''

def store_person(db):
    '''
    Query user for data and store in the shelf object
    '''
    pid = raw_input('Enter unique ID number: ')
    person = {}
    person['name'] = raw_input('Enter name: ')
    person['age'] = raw_input('Enter age: ')
    person['phone'] = raw_input('Enter phone number: ')
    db[pid] = person
    
def lookup_person(db):
    pid = raw_input("Enter ID number: ")
    field = raw_input("what would you like to know?(name,age,phone)")
    field = field.strip().lower()
    print field.capitalize()+':',db[pid][field]

def print_help():
    print "The available command are: "
    print "store :Stores information about a person"
    print "lookup :look up a person from ID number"
    print "quit :Save change and exit"
    print "?    :Print this message"

def enter_command():
    cmd = raw_input("Enter command(? for help): ")
    cmd = cmd.strip().lower()
    return cmd

def main():
    database = shelve.open("D:\\database.dat")
    try:
        while True:
            cmd = enter_command()
            if cmd == "store":
                store_person(database)
            elif cmd == "lookup":
                lookup_person(database)
            elif cmd == "?":
                print print_help()
            elif cmd =="quit":
                return
            
    finally:
        database.close()
    
if __name__ == "__main__":
    main()

 

14. 将字符串中大写字母转化为小写,小写转化为大写,标点和数字不做变化

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



str = "WWW.12kuqiao12.COM"



# print str.upper()   #全部转化为大写

# print str.lower()   #全部转化为小写

# print str.title()   #把每个单词的第一个字母转化为大写,其余小写



new_str = []

for i in range(len(str)):

    if str[i].islower():

        new_str.append(str[i].upper())

    elif str[i].isupper():

        new_str.append(str[i].lower())

    else:

        new_str.append(str[i])

print "".join(new_str)

# print str1.isdigit()  #判断是否是数字

# print str.isalnum()  #判断是否是字母和数字的组合

# print str2.isalpha()  #判断是否是字母

# print str3.isspace()  #判断是否为空格
 

15.求100以内的质数

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

num = []
for i in range(2,100):
    for j in range(2,i/2):
        if (i%j==0):
            break
    else:
        num.append(i)
print num
#-*- coding:utf-8 -*-
from math import sqrt

def main():
    for i in range(101,200):
        flag = 1
        k = int(sqrt(i))
        #print k
        for j in range(2,k+1):
            if i%j == 0:
                flag = 0
                break
        if flag == 1:
            print '%d' %(i),

if __name__ =="__main__":
    main() 

16. 1,2,3,4组成数字互不相同的3位数

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

count = 0

for i in range(1,5):

    for j in range(1,5):

        for k in range(1,5):

            if i != j and i != k and j != k:

                print i,j,k

                count +=1

print count

 

17.某个数,加100是一个完全平方数,再加上168又是一个完全平方数,求这个数;

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



import math

for i in range(0,1000):

    if i + 100 == int(math.sqrt(i+100))*int(math.sqrt(i+100)) and \

                            i + 268 == int(math.sqrt(i+268))*int(math.sqrt(i+268)):

        print i

 


18. 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

#-*- coding:utf-8 -*-
def fab(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1

for i in fab(6):
    print i,

 

19.分解质因数

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

def main():
    n = int(raw_input("Enter a number:"))
    print n,'=',
    while(n!=1):
        for i in range(2,n+1):
            if (n%i) == 0:           #余数9%2 1
                n /= i               #整除9/2 4
                if (n == 1):         #余1
                    print '%d' %(i)
                else:
                    print '%d*' %(i),
                break

if __name__ == "__main__":
    main()

 

     上述方法如果输入超过range的范围,则会报错,鉴于此新增了下列方法:

#-*- coding:utf-8 -*-
import math
number = int(raw_input("Enter a number: "))
list = []

def getChildren(num):
    isZhishu = True
    i = 2
    square = int(math.sqrt(num)) + 1
    while i <= square:
        if num % i == 0:
            list.append(i)
            isZhishu = False
            getChildren(num / i)
            i += 1
            break
        i += 1
    if isZhishu:
        list.append(num)

getChildren(number)
print list

 20.字典排序

# -*- coding:utf-8 -*-
import operator
x = {1:2, 3:4, 4:3, 2:1, 0:0}
sorted_x = sorted(x.items(),key=operator.itemgetter(0))
print(sorted_x)


new_dict = sorted(x.items(),key=lambda x:x[0])  #x为每次迭代的值
print(new_dict)

 

posted @ 2018-10-15 15:15  南山散人  阅读(318)  评论(1编辑  收藏  举报