4.4 数据类型基础——类型转换¶
内容梗概¶
本课讲解数字与字符串之间的类型转换函数。老师对照课件上的转换函数表格逐一演示:int()(含 base 参数)、float()、hex()/oct()/bin()、str(),以及解答同学疑问的一对函数 ord() 与 chr()(字符与 ASCII 码互转),并顺带解释了换行符 0D/0A 的含义。课程预告了以此为基础的作业(编解码程序),在交互模式中边讲边操作。
知识点详解¶
转换函数总览¶
- (约 00:19) 课件表格集中了常用的类型转换函数,课上逐一过一遍再动手试。
- (约 00:31)
complex():把两个数字(整数、小数均可)拼成实部+虚部的复数,用得少,不展开。
int(x, base=10)¶
- (约 01:15) 万能函数
int():参数x可以是数字或字符串;base默认 10(十进制)。 - (约 01:45) 演示
int("987654321"):字符串转成数字,显示时没有引号。 - (约 02:06) 指定进制:
int("0B1010101010", base=2)——把二进制字符串转成十进制整数 682。 - (约 02:52) 易错点:如果前面
x不是字符串而是数字,再加base参数会报错——用了base时x必须是字符串。 - (约 03:06) 如果
x本身就是带前缀的其他进制数字(如0b...),直接int(x)即可,Python 能根据前缀自行解析,不需要也不能写base。
float(x)¶
- (约 03:47)
float("3.14"):把字符串转成浮点数,用法与int()类似。
hex() / oct() / bin()¶
- (约 04:03) 这一组三个函数把整数转成**带前缀的字符串**:
hex()转十六进制、oct()转八进制、bin()转二进制。 - (约 04:52) 演示
hex(97)返回字符串'0x61'(注意结果有引号,是字符串不是数字)。
str(x)¶
- (约 08:24)
str():把变量或数字转成字符串,是"万能"的转字符串函数。 - (约 08:53) 注意:
str()对十六进制数转换后显示的仍是十进制形式的字符串;想得到十六进制形式的字符串应该用hex()。
ord() 与 chr()(字符编码)¶
- (约 09:42) 一对函数:
ord()把字符转成对应整数(ASCII/编码值),chr()把整数转回字符(chr 即 char 的缩写)。 - (约 10:46) 背景:字符在电脑上最终都存为数字(二进制),数字与字符的对应关系是 ASCII 码表,这就是编码与解码。
- (约 11:00) 演示
ord('a')得 97;chr(97)得'a'。 - (约 11:17) 解答上节课遗留问题:换行符
0D在字符串里写作'\x0D',ord('\x0D')得 13(0x0D = 十进制 13);它属于**不可打印字符**,只能用十六进制表示。常与0A(换行,'\x0A')一起出现——0A 和 0D 是两个不同的字符。
示例与演示¶
int("987654321")→ 数字 987654321;int("0B1010101010", base=2)→ 682。- 演示对非字符串加
base报错,带全班读错误信息。 float("3.14")字符串转浮点。hex(97)→'0x61',并说明oct()/bin()同理不再逐一操作。ord('a')→ 97、chr(97)→'a'、ord('\x0D')→ 13。
重点与难点¶
int()加base参数时,被转换的x必须是字符串;x 若是带进制前缀的数字本身,则不能加base。hex()/oct()/bin()的返回值是**带前缀的字符串**,不是数字。str()万能但只会给出十进制形式;要进制形式的字符串得用hex()等。ord/chr是字符↔编码值互转的钥匙,是理解字符编码和完成本次作业的核心。- 不可打印字符(如
\x0D、\x0A)只能用十六进制转义写出。
关联内容¶
- 承上:解答了 4.1(
0D换行符)和 4.2(字符串转义)遗留的问题;依赖 4.1 的进制知识与 4.2 的字符串基础。 - 启下:本课的
ord/chr/hex直接构成 4.6 作业"直男表白解码"(字符→十六进制编码与解码)的全部技术基础。 - 远期:编码/解码概念与后续文件读写、数据分析章节相关;上学期计算机安全维护课也提过字符存为数字。