跳转至

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(文档字符串)涉及三引号的另一用途。