学径 LearnPath

CAICP-E · Python 编程基础 / Wiki

字符串

用引号包住的文字。电脑把它当成一串字符。

它是什么

字符串 是文字。 类型名字是 str。 要用引号包住。 单引号、双引号都可以。

python
name = "小派"
city = '杭州'

"3" 是文字。 3 是整数。 盖子一盖,就不能直接当数字乘。

空字符串 "" 也是字符串。 里面一个字都没有。 长度是 0,它仍然是文字这种类型。

名字从哪来

字符串的英文是 string。 原意是「绳子」「一串」。

早期计算机科学家把字符一个接一个排起来,像珠子穿在绳子上。 所以叫 string of characters,一串字符。 中文译成「字符串」,保留了「串」这个画面。

今天的 Python 不只认识英文字母。 它使用 Unicode。 汉字、标点、emoji,都可以是字符串里的一个字符。 「中文也是字」,长度按字符数算:len("你好")2

它怎么工作

拼接和重复

+ 把两段接起来。 * 把同一段重复多次。

python
print("你好" + "小派")
print("哈" * 3)

print 用逗号分开,只是一起显示。 那不是真的拼接。

文字和数字拼在一起,要先 str()

python
age = 11
print("今年" + str(age) + "岁")

先转成文字,再拼接,句子就接得上。 以后还会见到更方便的写法。 入门先把 +str() 用熟就够。

下标、切片、长度

下标从 0 开始。 这和 列表 一样。

python
word = "编码"
print(word[0])      # 编
print(len(word))    # 2
print("hello"[1:4]) # ell

[-1] 是最后一个字符。 切片左闭右开:[1:4] 取下标 1、2、3。

常用方法

split 按分隔符切开,得到列表。

python
print("红,黄,蓝".split(","))

replace 换字。 常常得到新字符串。 旧的不一定被改。 想留下新的,要赋值。

python
line = "我喜欢猫"
line = line.replace("猫", "狗")

遍历和 循环 很配:

python
for ch in "hi":
    print(ch)

每个字符走一次。 空格、标点也算字符。

生活里在哪里

  • 姓名、班级、座右铭:都是文字,不是拿来乘除的数。
  • 短信、聊天记录:一串字发出去、存下来。
  • 图书索书号:看起来像数字和字母的混合物,其实是编号文字。
  • 歌词重复:「啦」唱三遍,很像 "啦" * 3

输入框里你敲的每一句话,程序收到时几乎都是字符串。 详见 input

和相近概念的差别

字符串是一串字符。 列表是一排格子,格子里可以装各种类型。

都可以按下标取、都可以遍历。 字符串里的某一个字,通常不能直接改成另一个字。 要得到新句子,常常做出一条新字符串。 列表更常原地修改。

"3"3 的差别,是 数据类型 里最常见的一对。 一个能拼接,一个能加减。

注释也是给人看的字,但写在 # 后面。 电脑会跳过注释,不会跳过字符串。 见 注释

常见误会

误会 1:引号不成对,或用了中文引号 “”

要用英文引号。 一头一尾配成一对。

误会 2:以为下标从 1 开始。

第一个字符是 [0]

误会 3:replace 后忘记赋值。

新句子做出来了,旧变量可能还握着旧句子。

误会 4:"哈" * 3 是三个人在笑。

它只是把字重复三遍,得到 哈哈哈

误会 5:中文算两个长度。

在 Python 3 里,一个汉字通常长度是 1。 len("你好")2

想知道更多

  • 书:潘洪波《小学生 Python 趣味编程》(有拼接、分割这类文字练习)。
  • 书:埃里克·马瑟斯《Python 编程:从入门到实践》(字符串一章可以和家长一起改问候语、拼句子)。

未登录时不会保存学习进度