01字符串编码
ord()和chr()函数
python 3中字符串是以Unicode编码实现,对单个字符,可以使用ord()函数获取字符的完整表示,chr()函数把编码转为对应的字符:
>>> print('包含中文的str')
包含中文的str
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(20091)
'乻'
>>> chr(20089)
'乹'
>>> chr(20099)
len()函数计算str字符数
也可以计算bytes的字节数(python字符串类型是str,在内存中是Unicode表示,在网络中传输,或者保存到磁盘上就需要变为以字节为单位的bytes)
python对bytes类型的数据用带b前缀的单引号或双引号表示。
x=b’ABC’
>>> len(b'ABC')
3
>>> len('中文')
2
编码encode()方法和解码decode()方法
以Unicode表示的str通过encode()方法可以编码为指定的bytes
反过来,如果从网络或磁盘上读取了字节流,那么读到的数据就是bytes此时要用decode()方法解码。
>>> '中文'.encode("utf-8")
b'\xe4\xb8\xad\xe6\x96\x87'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode("utf-8")
'中文'
保存源代码
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
第一行是为了告诉Linux/os X系统,这是一个python可执行程序,Windows会忽略这个注释
第二行是为了告诉python编译器,按照utf-8编码读取源代码,否则,你在源代码中写的中文可能会出现乱码。
占位符
%nd表示输出占n位,不够右端补齐,%0nd表示输出占n2位,不够补0。
如果字符中需要%,则用%%转义表示%
02 list和tuple(列表和元组)
列表可以随时添加和删除元素
元组一旦初始化就不能修改,因为tuple不可变,所以代码更安全。如果可能能用tuple代替list就尽量用tuple。(tuple的不可变指的是tuple中元素的指向永远不变)
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
上面代码看起来元组里面的元素变了,实际上变得是里面列表list的元素。
03 循环
Python的循环有两种,一种是for…in循环,依次把list或tuple中的每个元素迭代出来
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
如果要计算1-100的整数之和,从1写到100有点困难,幸好Python提供一个range()函数,可以生成一个整数序列,再通过list()函数可以转换为list。比如range(5)生成的序列是从0开始小于5的整数(0,1,2,3,4),注意不包括5:
sum = 0
for x in range(101):
sum = sum + x
print(sum)
第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。比如我们要计算100以内所有奇数之和,可以用while循环实现:
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用
n=1
while n<=100:
if n>10:
break
print(n)
n+=1
print("循环结束")