CH2 数据类型
• 2.1 标识符与关键字
• 2.2 基本数据类型
∗ 2.2.1 整数
∗ 2.2.2 布尔
∗ 2.2.3 浮点
∗ 2.2.4 字符
• 2.3 组合数据类型
∗ 2.3.1 序列类型:元组与列表
∗ 2.3.2 集合
∗ 2.3.3 字典(映射)
2.1 标识符与关键字
• 标识符:任意长度的非空字符序列
∗ 要求
◦ 引导字符:Unicode 编码字母、ASCII 字符、_,不能是数
字!
◦ 不能是关键字
and as assert break class
continue def del eif else
except False finally for from
global if import in is
lambda None nonlocal not or
pass raise return True try
while with yield
标识符命名约定
• 尽量不要使用Python 内置函数名与异常名, 如int, float...
• 避免使用名称的开始和结尾都是下划线
∗ 在Python 解释器中,输入如下语句,观察输出:
max.__doc__
注意:前后各是两个下划线”_”
'max(iterable, *[, default=obj, key=func]) -> value\nmax(arg1, arg2, *args, *[, key=func]) -> value\n\nWith a single iterable argument, return its biggest item. The\ndefault keyword-only argument specifies an object to return if\nthe provided iterable is empty.\nWith two or more arguments, return the largest argument.'
测试
hello-world = 1
Error!
5miles = 5
Error!
int = 5
正常运行,但不建议
hello_world = ’Hello world!’
OK
2.2 基本数据类型
• 基本数据类型
∗ 整数
∗ 布尔
∗ 浮点
∗ 字符
2.2.1 整数
• 默认为10 进制形式
12345
• 二进制形式:0bxxxx
0b1111 (15)
• 八进制形式:0oxxxx
0o10 (8)
• 十六进制形式:0xABCD
0xFF (255)
• 前导字符大小写均可以,如0XFF
数值型操作符与函数
语法描述
x//y 整除
xy 取模
x ∗ ∗y x 的y 次幂
abs(x) 取绝对值
pow(x, y) x 的y 次幂
round(x, n) 四舍五入,n 指小数位保留几位
整数转换函数
语法描述
bin(i) 返回整数i 的二进制形式
hex(i) 返回整数i 的十六进制形式
int(x) 将x 转换为整数
oct(i) 返回i 的八进制形式
整数位移操作符
语法描述
i|j 逻辑OR 运算
i ^ j XOR
i&j AND
i << j i 左移j 位,类似于i ∗ (i ∗ ∗j),但不带溢出检查
i >> j i 右移j 位,类似于i//(i ∗ ∗j),但不带溢出检查
~i 反转i 的每一位
位逻辑操作练习
i = 0b1010
j = 0b11000
print(i,j,i|j,i&j,i>>2,i<<2,~i)
手工计算一下结果是多少?并利用Python 解释器进行验证,注意,
可以利用bin() 函数,查看结果的二进制形式。
输出结果:10 24 26 8 2 40 -11
• 计算机内部通常采用补码表示整数,补码对于正数就是本身,而对于负
数就是最右边的1 不变,左边0 变1,1 变0,正数取反后在数值上
体现为−|x + 1|,负数的是|x| − 1。
• 如果要表示多个布尔值,可以利用一个整数进行表示,如文件的属性有
“读、写和执行” 三种,可以用一个三位的二进制数字表示。
2.2.2 布尔类型
基本用法:
t=True
f=false
t and f
False
t and True
True
布尔类型可以看作是一种特殊的整数类型,
False 为0,True 为1, 0 为False,
非0 值为True,例如:
1
True - 2
−1
2.2.3 浮点类型
float: 计算机以二进制表示浮点数,是近似表示
0.0,5.4,1e-2
(0.0, 5.4, 0.01)
x = 5.59
int(x)
5
s = x.hex()
’0x1.65c28f5c28f5cp+2’, 指数以p 表示,而不是e,why?
y = float.fromhex(s)
其他数字类型及操作
复数
z=1+2j
• 扩展包
∗ math
import math
math.pi
math.____
∗ decimal: 精度可控
import decimal
a = decimal.Decimal(1234)
b = decimal.Decimal("1234567890000.1234567")
a+b
Result: Decimal(’1234567891234.1234567’)
2.2.4 字符串
• 可以使用单引号或双引号,但两端必须相同
• 三个引号包含的字符串
∗ 可以直接在里面使用换行,而不需要进行转义处理
• 转义符
∗ 用于处理特殊字符,如回车、换行、引号等
◦ \r, \t, \n, \′, \, · · ·
◦ \xhh: 对应十六进制数字的字符
∗ 例子
s 'hello \x20 world\n\tI\'m fine.'
print(s)
输出结果:
hello world
I’m fine.
常见函数
• Python 通过ord 和chr 两个内置函数, 用于字符与ASCII
码之间的转换
∗ ord() 函数
求特定字符的Unicode 编码,以十进制表示返回结果
∗ chr() 函数
返回整数所对应的字符
ord('A')
65
hex(ord('A'))
’0x41’
hex(ord('中'))
’0x4e2d’
chr(0x4e2d)
’ 中’
字符串比较
内部安装字符串的ASCII 码值进行比较
"RUC" > "IRM"
True
"China" > "Canada"
True
字符串分片与步距

语法
∗ s[start]
∗ s[start:end]
∗ s[start:end:step]
字符串步距
步距默认为1,但可以为负
字符串操作方法I

字符串操作方法II

字符串操作方法III

字符串操作方法IV

字符串操作方法V

join 函数
countries=['China','USA','Japan']
" ".join(countries)
’China USA Japan’
"<->".join(countries)
’China <-> USA <-> Japan’
字符串复制*
s='ab' *3
’ababab’
s *= 2
’abababababab’
format() 函数
'{0} is {1} years old.'.format("Tom",5)
'Toms is 5 years old.'
网友评论