Python快速复习

以前用Python写过数据库和网络编程,但是现在有的东西有点忘了,这次来快速复习一下。


1.for i in range(1, 5):

这个语句中range的范围是左闭右开,[1,5),输出1, 2, 3, 4

还有:range(1, 5, 2),代表间隔2。所以输出1, 3

range(5)代表从0到5,不包括5,输出0,1,2,3,4


2.rat = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]

Python中的列表,相当于C++的数组。它是任意对象的序列,rat=[],是创建一个空列表。

>>> range ( 1 , 5 ) #代表从1到5(不包含5)
[ 1 , 2 , 3 , 4 ]
>>> range ( 1 , 5 , 2 ) #代表从1到5,间隔2(不包含5)
[ 1 , 3 ]
>>> range ( 5 ) #代表从0到5(不包含5)
[ 0 , 1 , 2 , 3 , 4 ]

再看看list的操作:

array =  [ 1 , 2 , 5 , 3 , 6 , 8 , 4 ]
#其实这里的顺序标识是
[ 1 , 2 , 5 , 3 , 6 , 8 , 4 ]
( 0 1 2 3 4 5 6 )
( - 7 , - 6 , - 5 , - 4 , - 3 , - 2 , - 1 )
 
>>> array[ 0 :] #列出0以后的
[ 1 , 2 , 5 , 3 , 6 , 8 , 4 ]
>>> array[ 1 :] #列出1以后的
[ 2 , 5 , 3 , 6 , 8 , 4 ]
>>> array[: - 1 ] #列出-1之前的
[ 1 , 2 , 5 , 3 , 6 , 8 ]
>>> array[ 3 : - 3 ] #列出3到-3之间的
[ 3 ]

 

那么两个[::]会是什么那?

>>> array[:: 2 ]
[ 1 , 5 , 6 , 4 ]
>>> array[ 2 ::]
[ 5 , 3 , 6 , 8 , 4 ]
>>> array[:: 3 ]
[ 1 , 3 , 4 ]
>>> array[:: 4 ]
[ 1 , 6 ]
如果想让他们颠倒形成reverse函数的效果
>>> array[:: - 1 ]
[ 4 , 8 , 6 , 3 , 5 , 2 , 1 ]
>>> array[:: - 2 ]
[ 4 , 6 , 5 , 1 ]
(上面来自: http://www.cnblogs.com/buro79xxd/archive/2011/05/23/2054493.html


例如:列表复制

	a = [1, 2, 3]
		b = a[:]
		print b


3. x = int(math.sqrt(i + 100))

Python也是有强制转换的。


4. print '%d * %d = % -3d' % (i, j, result)

print函数打印格式,用%连接变量和format,上面的%-3d和C语言中一样,是负号代表左对齐。


5.一个例子

def reduceNum(n):
    print '{} = '.format(n),
    if not isinstance(n, int) or n <= 0 :
        print '请输入一个正确的数字 !'
        exit(0)
    elif n in [1] :
        print '{}'.format(n)
    while n not in [1] : # 循环保证递归
        for index in xrange(2, n + 1) :
            if n % index == 0:
                n /= index # n 等于 n/index
                if n == 1: 
                    print index 
                else : # index 一定是素数
                    print '{} *'.format(index),
                break
reduceNum(90)
reduceNum(100)

[1]是一个只有元素1的列表,isinstance是用来检查参数,本代码中用来检查是否是int类型。'{}'.format(n),把n以字符串格式输出


6.

n = int(raw_input('n = :\n'))
a = int(raw_input('a = :\n'))
for count in range(n):
    Tn = Tn + a
    a = a * 10
    Sn.append(Tn)
    print Tn

Sn = reduce(lambda x, y : x + y, Sn)
print Sn

该函数输出:4   44 48

 python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。
如:
    def myadd(x,y):  
        return x+y  
    sum=reduce(myadd,(1,2,3,4,5,6,7))  
    print sum  

#结果就是输出1+2+3+4+5+6+7的结果即28。

lambda函数就不用多说了,C++11也引入了lambda表达式。


7.按逗号分隔列表

L = [1,2,3,4,5]
s1 = ','.join(str(n) for n in L)
print s1
输出1, 2, 3, 4, 5


8.将数组逆序输出

if __name__ == '__main__':
    a = [9, 6, 5, 3, 1]
    N = len(a)
    print a
    for i in range(len(a) / 2): 
        a[i], a[N-i-1] = a[N-i-1], a[i]
    print a

9. 模块化编程

1.main文件

import external

if __name__ == '__main__':
    print external.add(10, 20) 
2.external文件

def add(x, y): 
    return x + y 
输出30。


10.交换两个数,元组实现,C++的tuple

def swap(a, b): 
    a, b = b, a
    return (a, b)

if __name__ == '__main__':
    x = 10
    y = 20
    print 'x = %d, y = %d' % (x, y)
    x, y = swap(x, y)
    print 'x = %d, y = %d' % (x, y)

11.练习匿名函数

MAXIMUM = lambda x,y : (x > y) * x + (x < y) * y     //步骤很多余,只是为了说明形式
MINIMUM = lambda x,y : (x > y) * y + (x < y) * x 

if __name__ == '__main__':
    a = 10
    b = 20
    print 'The larger one is %d' % MAXIMUM(a, b)
    print 'The lower one is %d' % MINIMUM(a, b)


12.输出一个随机数

import random
print random.uniform(10, 20)
输出14.4012371357


13.同样支持按位运算&,|,^等等。


14.计算字符串长度

str = 'strlen'
print len(str)


15.打印杨辉三角
if __name__ == '__main__':
    a = []
    for i in range(10):
        a.append([])    #相当于变成二维数组
        for j in range(10):
            a[i].append(0)    #每一维初始一位元素为0
    for i in range(10):
        a[i][0] = 1 
        a[i][i] = 1 
    for i in range(2, 10):
        for j in range(1, i): 
            a[i][j] = a[i-1][j-1] + a[i-1][j]
    from sys import stdout
    for i in range(10):
        for j in range(i+1):
            stdout.write(str(a[i][j]))
            stdout.write(' ')
        print            #配合stdout,直接pint即可


16.查找字符串

s1 = 'abcdefg'
s2 = 'cde'
print s1.find(s2)
返回下标2


17.文件操作

if __name__ == '__main__':
    from sys import stdout
    filename = raw_input('input a file name:\n')
    fp = open(filename, "w")
    ch = raw_input('input string:\n')
    while ch != '#':
        fp.write(ch)
        stdout.write(ch)
        ch = raw_input('\n')
    fp.close()

18.

if __name__ == '__main__':
    fp = open('test.txt','w')
    string = raw_input('please input a string:\n')
    string = string.upper()
    fp.write(string)
    fp = open('test.txt','r')
    print fp.read()
    fp.close()

19.往第一个文件追加文件

1.两个文件都读写,然后合并再写回的方式。推荐下面那个。

import string

if __name__ == '__main__':
    fo = open('1.cpp', 'r')
    fi = open('2.cpp', 'r')
    content = fo.read()
    contentadd = fi.read()
    fi.close()
    fo.close()

    content = content + '\n' + contentadd
    fo = open('1.cpp', 'w')
    fo.write(contentadd)
    fo.close()
    print 'OK'
2.append方式,推荐这个,上面那个纯粹是为了熟悉API。

import string

if __name__ == '__main__':
    fi = open('2.cpp', 'r')
    contentadd = fi.read()
    fi.close()

    fo = open('1.cpp', 'a')
    fo.write(contentadd)
    fo.close()
    print 'OK'
这样,2.cpp就可以愉快的追加在1.cpp后面了。


20.列表转化为字典

i = ['a', 'b']
l = [1, 2]
print dict([i, l])

以上输出:{'a': 'b', 1: 2}





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值