• # -*- coding: utf-8 -*-
    #筛法求素数
    MAX = 1000
    print(2, end=' ')
    aList = []
    for i in range(0, MAX+1):
        aList.append(0)
    
    for i in range(3, MAX+1, 2):
        for j in range(i+i, MAX+1, i):
            aList[j] = 1
    
    for i in range(3, MAX+1, 2):
        if(aList[i]==0):
            print(i, end=' ')
    
  •  

    PyScripter是一个windows下的开源python集成开发环境。

    最吸引人的地方在于其人性化的VS式界面,方便的路径管理与编辑视图,当然,最重要的是调试功能。应该算是一个功能比较全的IDE了,可以作为IDLE的良好补充。

     

     

    下载地址:http://code.google.com/p/pyscripter/

    另外使用python时发现其对于uft-8格式似乎不能正确检测,我发现的解决办法是在文件第一行加上

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

    这也是python官方文档中提到的写法

     

  • 题目:计算从1到n的自然数中有多少个数字1,例如10包含一个"1",而110则包含两个"1"

    #计算从1到n的自然数中数字1的个数
    
    g_count = 0
    for i in range(1,100000):
        g_count = g_count + str(i).count('1')
        if(i==9 or i==99 or i==999 or i==9999 or i==99999):
            print('从1到%d共有%d个数字1' % (i,g_count))
    
    

  • #python多线程应用(一)——创建线程
    import threading
    from time import sleep
    
    def test_func(id):
        for i in range(0,5):
            sleep(1)
            print('thread %d is running %d' % (id,i))
    
    threads = []
    for i in range(0,3):
        t = threading.Thread(target=test_func, args=(i,))
        threads.append(t)
    
    for t in threads:
        t.start()
    
    for t in threads:
        t.join()
    

     

  •  

    程序功能:输入为一个整数,调用APfirst输出第一位有效数字,每调用APnext输出下一位有效数字

    #用python找有效数字的问题
    g_count = 0
    def APfirst(num):
        global g_count
        g_count = 0
        return int(str(num)[0])
    
    def APnext(num):
        global g_count
        if(g_count < len(str(num))-1):
            g_count = g_count + 1
        return int(str(num)[g_count])
    
    input_num = 1234567890
    print(APfirst(input_num))
    for i in range(0,11):
        print(APnext(input_num))
    print(APfirst(input_num))
    print(APnext(input_num))
    
  • python本身提供了排序功能,其排序算法是稳定的,即key相等的两项在排序后的先后次序不变

    下面通过list.sort来演示一下如何通过key函数来进行自定义的排序

    所谓的key函数,就是以参加排序的每一项作为输入,而输出则为用来排序的key值

    #python list 排序
    
    def my_key1(x):
        return x % 10
    aList = [4, 5, 1, 2, 12, 34, 56, 9 ,80]
    aList.sort() #默认按升序排列
    print(aList)
    aList.sort(reverse = True) #按降序排列
    print(aList)
    aList.sort(key = my_key1) #根据key函数,按照个位数进行升序排列
    print(aList)
    
    def my_key2(x):
        return x[1]
    aList = [(4,'ab'), (56,'c'), (1,'bb'), (102, 'a')]
    aList.sort(key = my_key2) #按照每个元组的第2分量,即字符串排序
    print(aList)
    
  • 下面的代码通过算24的算法演示了python的函数定义和调用的方法

    # 算24程序
    
    import math
    
    PRECISION = 1E-6
    COUNT_OF_NUMBER = 4
    NUMBER_TO_BE_CAL = 24
    
    g_number = [4, 4, 7, 7]
    g_expression = ['', '', '', '']
    for i in range(0, 4):
        g_expression[i] = "%d" % g_number[i]
    print(g_expression)
    
    
    
  • 文件的遍历、删除和添加是最常用的文件命令,利用python的系统接口,我们可以很容易的实现这些功能

    # python文件处理
    import os
    
    MAX_DEPTH = 2
    
    def traversal(path, depth):
        if( MAX_DEPTH == depth):
            return
        else:
            dirList = os.listdir(path)
            for it in dirList:
                if(os.path.isdir(path+'\\'+it)):
                    print(it)
                    traversal(path+'\\'+it,depth+1)
                else:
                    print(' '*depth + it)
    
    traversal('c:\\Program Files',1) # 遍历c:\\Program Files目录,最大深度为MAX_DEPTH
    
    # 创建一个目录,并在目录下创建两个空文件
    bFlag = True
    if(bFlag):
        sDir = 'c:\\python_test'
        os.mkdir(sDir)
        fp = open(sDir + '\\1.dat', 'w')
        fp.close()
        fp = open(sDir + '\\2.dat', 'w')
        fp.close()
    
    def delTree(path): # 删除目录及下面的所有文件
        dirList = os.listdir(path)
        for it in dirList:
            if(os.path.isdir(path+'\\'+it)):
                delTree(path+'\\'+it)
            else:
                os.remove(path+'\\'+it)
        os.rmdir(path)
    
    delTree('c:\\python_test')
    
    
  • 从文本文件中读入浮点数据,是最常见的任务之一,python没有scanf这样的输入函数,但我们可以利用正规表达式从读入的字符串中提取出浮点数

    import re
    
    fp = open('c:/1.txt', 'r')
    
    s = fp.readline()
    print(s)
    aList = re.findall('([-+]?\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?',s) #使用正规表达式搜索字符串
    print(aList)
    
    for ss in aList:
        print(ss[0]+ss[2])
        aNum = float((ss[0]+ss[2]))
        print(aNum)
    fp.close()
    
    


  • 这个代码演示了如何从文件中按行读入字符串,并利用正规表达式从中提取出整数

    # python读入整数
    
    import re
    
    fp = open('c:/2.txt', 'r')
    s = fp.readline()
    print(s)
    aList = re.findall('[-+]?\d+',s) #使用正规表达式搜索字符串
    print(aList)
    
    for ss in aList:
        print(ss)
        aNum = int(ss)
        print(aNum)
    fp.close()