4.2 数据类型基础——字符串¶
内容梗概¶
本课讲解 Python 的字符串。老师先从 C 语言的字符数组引入,指出字符串是由字符组成的**不可变序列**;随后讲解了格式化输出(类似 C 的 printf)、单双引号的选用与转义、原始字符串 r"" 在文件路径中的作用、三引号表示多行字符串;重点演示了字符串的索引(含负索引)与切片(左闭右开区间、可省略首尾、支持步长),并现场通过报错信息强调字符串不可修改;最后用 % 格式化与元组铺垫了多变量输出。课程在 CMD 交互模式和脚本文件中同步演示。
知识点详解¶
字符串是不可变序列¶
- (约 00:24) 字符串属于 Python 中的**不可变序列**;C 语言里没有字符串概念,只有字符数组,Python 中是由字符组成的序列。
- "不可变"指不能修改其中的内容(后面通过报错演示验证)。
格式化输出(类似 printf)¶
- (约 01:00) 用
print输出,与 C 的printf只差一个f,注意不要混用。 - (约 02:13) 与 C 一样可用
%s占位符:字符串后用%跟上要显示的变量,如print("...%s..." % a)。
单引号与双引号¶
- (约 02:54) Python 中单引号、双引号都可以定义字符串,但**不能混用**(单引号开头双引号结尾会报
SyntaxError: EOL while scanning string literal,EOL 即 End Of Line)。老师强调要养成读错误输出的习惯。 - (约 03:50) 引号的福利:字符串内部含单引号时,就用双引号包起来(反之亦然),可避免写转义字符
\。如a = "I can't learn python"直接写会报invalid syntax,转义或换引号均可解决。 - (约 05:00) 额外福利:单引号不用按 Shift,大量写代码时手感更好。
原始字符串 r""¶
- (约 05:37) 用桌面新建
1.txt并写路径的例子演示:Windows 路径里的\会被当成转义符,\a、\1等无法转义时会报错,print 出来看似正常实际有问题。 - (约 08:37) 在字符串前加
r(原始字符串),反斜杠不再转义,路径可原样书写,例如用open()打开r"C:\...\1.txt"读取并打印成功。 - (约 09:16) 后面讲文件读写时会大量使用原始字符串写路径;否则要手动把所有
\补成\\,复制粘贴路径也很麻烦。
三引号与多行字符串¶
- (约 10:00) 字符串太长想分多行书写:行尾加反斜杠
\续行,输出仍是一行(注意续行处不要有缩进,否则会把空格带进字符串)。 - (约 11:39) 若字符串内容本身要包含换行(如打印一首诗),需用**三个单引号或三个双引号**包裹,换行会被保留;同样要求前后引号统一,不能三单引号开头三双引号结尾。
索引¶
- (约 14:35) 以字符串
"Python"为例:索引(下标)从 0 开始,[0]取出P;支持负索引,-1到最后一个字符,如[-5]取出y。 - (约 16:04) 不可变性验证:
s[0] = 'p'会报TypeError: 'str' object does not support item assignment——字符串不支持对元素赋值。老师反复强调读报错是入门程序员与没入门的唯一区别。
切片(取子串)¶
- (约 17:33) 语法:
s[start:end],取出从 start 到 end-1 的字符,即**左闭右开区间**(与高数的区间记号对应)。取"Py"要写s[0:2]。 - (约 20:26) 取到字符串末尾时 end 可省略:
s[起始:];从头开始取时 start 可省略:s[:2];两边都省略s[:]即取整个串。 - (约 23:35) 步长:
s[start:end:step],如s[::2]表示从头取到尾、每次跳 2 个字符。
拼接¶
- (约 22:27) 对比 C 语言拼接字符串要分配内存、copy、
strcat的"痛苦岁月",Python 直接用+号拼接即可。
多变量格式化与元组¶
- (约 25:21) 格式串中有多个占位符(如
%d和%s)时,%后面要用圆括号把多个变量括起来:"...%d...%s..." % (num, s)。 - (约 26:47) 这个圆括号括起来、含多个元素的整体叫做**元组**(数据类型进阶时再详讲),其元素按顺序对应到各占位符。
示例与演示¶
hello world变量 +%s输出"安静说了一句 hello world"。- 演示混用单双引号报错并逐行解读错误信息(
SyntaxError: EOL...)。 - 演示
"I can't learn python"不加转义报invalid syntax。 - 新建
1.txt写入 ABC,演示普通字符串路径报错、加r后用open()成功读取打印。 - 打印诗句演示三引号保留换行(课堂互动背《将进酒》,属活跃气氛内容)。
"Python"字符串演示索引[0]→P、[-5]→y、切片[0:2]→Py、[::2]跳取。- 演示
s[0]='p'赋值报TypeError。
重点与难点¶
- 不可变序列:字符串不能通过索引赋值修改,只能整体重新赋值或拼接生成新串——这是本节最易错的点。
- 切片左闭右开:
end位置取不到,取到的是end-1;首尾可省略;支持负索引和步长。 - 转义与原始字符串:路径、换行等场景下
\会被转义,写路径优先用r"..."。 - 引号不能混用;学会读
SyntaxError、TypeError等报错信息。 - 多变量
%格式化要用元组(圆括号)包裹。
关联内容¶
- 承上:延续 4.1 的交互模式演示方式;解答了 4.1 遗留的
0D换行符疑问(转义字符在字符串中讲)。 - 启下:讲完字符串后进入 4.4 类型转换(数字与字符串互转);换行符
\x0D/\x0A的数值在 4.4 的ord()中演示。 - 元组、列表(4.5)与字符串同为序列,索引/切片语法完全一致(4.5 会复用本节知识)。
- 原始字符串为后续"文件读写"章节做准备;字符串更多方法(如首字母大写等)引导查阅官方文档"内置类型",实战中再展开。
- 答疑课 4.3(文档字符串)涉及三引号的另一用途。