1. 数据类型和变量
- 整数:0,-3, 333 ,0xff00(十六进制)
- 浮点数:0.4 ,1.23e9(1.23x109) , 0.000012可以写成
1.2e-5
- 字符串:‘a’或“a”,用单引号和双引号括起来,如果字符串中包括单、双引号,用转义字符 \'(\")表示,在命令行模式下换行用'''...''',str类型
- 布尔值:and,or,not ; and 与运算 都true为true,or 或运算 都False为false 其余为真, not 非运算 not false = true
- 空值:none,注意这里none不是0
- 变量:字母、数字、下划线组成的(且数字不能为首字母)
- 常量:用大写表示 例如PI=3.14159265359
- 除法:/(正常的除),//(取整除),%(取余除)
2.字符编码
- 编码类型:
类型 | 特点 | 大小 |
ASCII编码 | 支持大小写英文字母、数字和一些符号 | 1字节 |
UTF-8编码 | 可变长编码,节约存储空间,ASCII编码可以看做是UTF-8编码的一部分,python中最常用 | 1-6字节,英文1字节,汉字3字节,生僻字4-6字节 |
Unicode编码 | 所有语言统一编码(大小写英文字母、数字和一些符号用ASCII编码,并在前补1字节的0) | 2字节,生僻字4字节 |
- 编码转换:在计算机内存中,统一用Unicode编码,需要保存或者传输时,先转换成UTF-8编码再保存;浏览网页时,服务器会将动态生成的Unicode编码转换成UTF-8编码再传输到浏览器。
- python字符串编码:
- 采用Unicode编码,支持多语言;
- 单字符:获取编码 ord('A') ,结果为65 ;转换成编码chr(65),结果为A;
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
3.python字符串转变如果知道字符的整数编码,可以用16进制直接表示,例如
>>> '\u4e2d\u6587' '中文'
由于python字符串是str类型,所以在存储和传输时,要转换成计算机识别的byte类型(一个字符对应着若干个字节);python中的字节用b+'字符串'表示,如b'asc',表示byte类型的字符串'asc','asc'表示str类型的字符串'asc',二者占用字节数不同。
- byte变成str:b'字符串'.decode()函数
- str变成byte:'字符串'.encode()函数
- 只能计算str中字符大小:len('字符串')函数
#!/usr/bin/env python3 # 告诉Linux/OS X系统,这是一个python可执行程序,Windows系统会忽略这个注释 # -*- coding: utf-8 -*- # 告诉python解释器,采用UTF-8编码读取原文件,否则,在源代码中写的中文输出可能会乱码
>>> b'ABC'.decode('ascii') 'ABC' >>> 'ABC'.encode('utf-8', errors='ignore') #可忽略很少的错误 b'ABC'
>>> len('ABC')
3
>>> len(b'ABC'.encode('utf-8'))
申明了UTF-8编码并不意味着你的
.py
文件就是UTF-8编码的,必须并且要确保文本编辑器正在使用UTF-8 without BOM编码:
- 格式化
1. 在python中格式化和c语言一样,采用%?占位来表示,%%表示一个%字符,其中%d,替换整数,%f-浮点数,%s-字符串,%x-16进制数
>>> 'Hello, %s' % 'world' #一个占位符可省略括号 'Hello, world' >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000) 'Hi, Michael, you have $1000000.'
>>> '%02d-%07.2f' % (3, 3.1415926) #格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
03-0003.14
2. 使用'{0:07.2f},{1}'.format(字符1,字符2)方法
>>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, 小明, 成绩提升了 17.1%'
3. 使用list和tuple
- list:类似于数组和栈的结合,元素类型可以不同,用[]初始化
>>> list_1 = ['Michael', 1, True]
>>> list_1[-1] #取最后一个 倒数第二个为[-2]
True >>> list_1[0] #从0开始
'Michael' >>> list_2 = ['Michael', ['Bob','Marry'], 'Tracy'] #第二个位置代表list里面包含另一个list,list的嵌套,
>>> list_2[1][1] #可以看作数组
'Marry'
>>> list_2.append['May'] #在list尾部追加'May'
>>> list_2
['Michael', ['Bob','Marry'], 'Tracy','May']
>>> list_2.insert(1,'Jack') #在list第2个位置插入'Jack'
>>> list_2
['Michael', 'Jack', ['Bob','Marry'], 'Tracy','May']
>>> list_2.pop() #删除末尾元素
>>> list_2.pop(1) #删除第2个元素
>>> list_2
['Michael', ['Bob','Marry'], 'Tracy']
>>> len(list_2)
3
>>> list_1.sort() #排序
- tuple:和list使用方式一样,不同的是tuple用()定义,并且它类似于静态变量,一旦定义后不可更改,因此具有安全性,在python中能定义成tuple不定义成list。tuple可以嵌套list,list里面的内容是可以增删的。
>>> tuple_1 = (1, 2) >>> tuple_1 (1, 2)
#定义空tuple
>>> t = () >>> t ()
#定义1个元素,且元素是1 如果不加,则可以看做是(1),会产生歧义,因此加,消除歧义
>>> t = (1,) >>> t (1,)
#tuple中的list可以改变,并且可以使用list的pop,append和insert函数,但是tuple中只允许使用tuple[][]来查看元素
>>> t = ('a', 'b', ['A', 'B']) >>> t[2][0] = 'X' >>> t[2].insert['c'] >>> t ('a', 'b', ['X', 'Y', 'c'])
4.条件判断
- if-else 只要遇到满足条件就跳出条件语句
if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> else: <执行4>
5.循环
- for...in...循环:把list和Tuple中的元素迭代出来
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
#结果
Michael Bob Tracy
sum = 0 for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: sum = sum + x print(sum)
#结果
55
sum = 0 for x in range(101): #range(101) 生成从0到100的整数 sum = sum + x print(sum) #结果 5050
- while循环:只要满足条件,就循环,不满足则退出
#打印100以内的奇数
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
- 退出循环:break:提前结束循环;continue:提前结束本次循环,继续下一次循环;
- 当遇到死循环时,Ctrl+c可退出
4. 使用dict和set
1). dict(字典,dictionary):和map类似,定义了(键-值)对,使用(key-value)存储,用{key1:value1,key2:value2}初始化;- 和list比较,dict有以下几个特点:
- 查找和插入的速度极快,不会随着key的增加而变慢;
- 需要占用大量的内存,内存浪费多。
而list相反:
- 查找和插入的时间随着元素的增加而增加;
- 占用空间小,浪费内存很少。
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
>>> d['Tracy'] = 67 #可以重新根据key赋值 并且key永远是最后赋值的值
>>> d['Tracy']
67
#判断key是否存在
>>> 'Thomas' in d False
>>> d.get('Thomas') #返回none 但是在交互界面不显示 >>> d.get('Thomas', -1) #返回自己定义的值,说明不存在该KEY -1
2. 可以使用pop函数 d.pop(key),删除键值对;
2). set:set可以看成数学意义上的无序和无重复元素的集合,定义为 ([1,2,3]),两个set可以做数学意义上的交集、并集等操作:
- set.add(key):添加元素,也可添加重复项,但是会自动过滤
>>> s.add(4) >>> s {1, 2, 3, 4} >>> s.add(4) >>> s {1, 2, 3, 4}
- set.remove(key):删除元素
>>> s.remove(4) >>> s {1, 2, 3}
- set1&set2 取交集
- set1|set2 取并集
>>> s1 = set([1, 2, 3]) >>> s2 = set([2, 3, 4]) >>> s1 & s2 {2, 3} >>> s1 | s2 {1, 2, 3, 4}