• 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使用'
    ',Linux使用'
    '而Mac使用'
    '。
    import os
    def WriteFile(filename):
        fp = open(filename,"a")
        print "
    请输入多行文字","(输入.号回车保存)"
        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	est.txt")

    11.读写文件

    #-*- coding:utf-8 -*-
    spath=r"F:AONE	est.txt"
    f=open(spath,"w")
    f.write("First line 1.
    ")
    f.writelines("First line 2.
    ")
    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
  • 相关阅读:
    docker gitlab and gitlab api
    service mesh,linkerd,sidecar,apigateway
    FIS3
    various system release [online]
    certification on windows and
    postman_
    macbook ios recovery and mount hfs+ journal and revert
    distribution system index
    登录科普(一)CAS与Oauth
    sonar,jiar,xray,jenkins[cli] [sudoers]
  • 原文地址:https://www.cnblogs.com/python-kp/p/9791174.html
Copyright © 2020-2023  润新知