zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    关于同余最短路
    【水】关于 __attribute__
    题解【AtCoder
    一些简单图论问题
    浅谈简单动态规划
    关于博客园主题(美化博客园)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第47章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第46章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第45章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第44章 读书笔记(待更新)
  • 原文地址:https://www.cnblogs.com/python-kp/p/9791174.html
Copyright © 2011-2022 走看看