以前用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
]
|
例如:列表复制
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)
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即可
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}