python 自学笔记

日期: 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不执行。

1
2
3
4
5
6
7
8
9
10
a=10
b=0
try:
c = b/ a
print c
except (IOError ,ZeroDivisionError),x:
print x
else:
print "no error"
print "done"

python if name == ‘main‘解析

换句通俗的话讲,当你在当前文件运行一个文件时,__name__==__main__,则其后的代码会正常执行,但是当你在另一个文件import这个文件的时候,此时__name__!=__main__,则以下的代码将不会执行。至于他的作用,我简单的理解就是加入if __name__ == "__main__"后,它后面的代码在其它地方引用时,就不执行,从而方便了代码的重用。示例:add.py如下:

1
2
3
4
5
6
7
def add(x,y):
return x+y
if __name__ == "__main__"
print add(3,4)

当我在其它地方引用这个add.py时,就不执行print。

文章目录
  1. 1. 日期: 2017-07-07 17:17:42
  • tags: python
    1. 0.0.1. Python异常处理 try…except…
    2. 0.0.2. python if name == ‘main‘解析