日期: 2017-07-07 17:17:42
tags: python
对于单个字符的编码,Python 提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
以 Unicode 表示的 str 通过 encode() 方法可以编码为指定的 bytes ,例如:
>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
计算字符串长度:
>>> len('ABC')
3
保留小数:
>>> '%2d-%02d' % (3, 1)
' 3-01'
>>> '%.2f' % 3.1415926
'3.14'
有些时候,字符串里面的 % 是一个普通字符怎么办?这个时候就需要转
义,用 %% 来表示一个 % :
>>> 'growth rate: %d %%' % 7
'growth rate: 7 %'
list列表用法:
>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']
>>> classmates[0]
'Michael'
获取最后一个元素:
>>> classmates[-1]
'Tracy'
往 list 中追加元素到末尾:
>>> classmates.append('Adam')
把元素插入到指定的位置,比如索引号为 1 的位置:
>>> classmates.insert(1, 'Jack')
要删除指定位置的元素,用 pop(i) 方法,其中 i 是索引位置:
>>> classmates.pop(1)
要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:
>>> classmates[1] = 'Sarah'
Python 的循环有两种,一种是 for...in 循环,依次把 list 或 tuple 中的每个元素迭代出来,看例子:
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
执行这段代码,会依次打印 names 的每一个元素:
Michael, Bob, Tracy
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum = sum + x
print(sum)
sum = 0
for x in range(101):
sum = sum + x
print(sum)
第二种循环是 while 循环,只要条件满足,就不断循环,条件不满足时
退出循环。
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
重复元素在 set 中自动被过滤:
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
>>> s.add(4)
>>> s
{1, 2, 3, 4}
通过 remove(key) 方法可以删除元素:
>>> s.remove(4)
>>> s
{1, 2, 3}
set 可以看成数学意义上的无序和无重复元素的集合,因此,两个 set 可以做数学意义上的交集、并集等操作:
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
而对于不可变对象,比如 str,对 str 进行操作呢:
>>> a = 'abc'
>>> a.replace('a', 'A')
'Abc'
>>> a
'abc'
>>> max(2, 3, 1, -5)
3
>>> int('123')
123
>>> int(12.34)
12
math包里含有数学运算有:三角函数:cos,sin。。开平方sqrt()
>>> import math
>>> math.sqrt(2)
1.4142135623730951
def power(x, n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
对于这个修改后的 power(x, n) 函数,可以计算任意 n 次方:
>>> power(5, 2)
25
>>> power(5, 3)
125
def enroll(name, gender, age=6, city='Beijing'):
print('name:', name)
print('gender:', gender)
print('age:', age)
print('city:', city)
这样,大多数学生注册时不需要提供年龄和城市,只提供必须的两个参
数:
>>> enroll('Sarah', 'F')
name: Sarah
gender: F
age: 6
city: Beijing
def calc(numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
>>> calc((1, 3, 5, 7))
定义可变参数和定义一个 list 或 tuple 参数相比,仅仅在参数前面加了一个 * 号。
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
>>> calc(1, 2)
5
>>> nums = [1, 2, 3]
>>> calc(*nums)
14
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
>>> person('Michael', 30)
name: Michael age: 30 other: {}
>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
递归函数:
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
>>> fact(5)
120
函数的切片:
>>> L[0:3]
['Michael', 'Sarah', 'Tracy']
L[0:3] 表示,从索引 0 开始取,直到索引 3 为止,但不包括索引 3 。
>>> (0, 1, 2, 3, 4, 5)[:3]
(0, 1, 2)
>>> 'ABCDEFG'[:3]
'ABC'
前 10 个数,每两个取一个:
>>> L[:10:2]
[0, 2, 4, 6, 8]
Python异常处理 try…except…
我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except。
当try语句块出现错误,便跳出try程序块,执行except
try ….except…else 语句,当没有异常发生时,try和else中的语句将会被执行,而except不执行。
python if name == ‘main‘解析
换句通俗的话讲,当你在当前文件运行一个文件时,__name__==__main__,则其后的代码会正常执行,但是当你在另一个文件import这个文件的时候,此时__name__!=__main__,则以下的代码将不会执行。至于他的作用,我简单的理解就是加入if __name__ == "__main__"后,它后面的代码在其它地方引用时,就不执行,从而方便了代码的重用。示例:add.py如下:
当我在其它地方引用这个add.py时,就不执行print。