跟着NOAI考纲学Python,学完就能考,第11课
每天一个知识点,带你自学NOAI,加入我们吧~
前面学了列表、字典、元组这些数据结构。但有一种数据你从第一课就在用——字符串。之前只是用它存文字、打印出来。这节课深入学字符串操作——切片、查找、替换,让字符串不只是一段文字。
字符串也能用索引
字符串和列表一样,是有顺序的序列。每个字符都有自己的索引,从0开始:
s = "Python" |
P
h
n
跟列表一样,s[0] 取第一个字符,s[-1] 取最后一个字符。
切片
想取一段连续的字符,用切片:s[start:end],取从 start 到 end-1 的部分,不包含 end。
s = "Python" |
Pyt
thon
Pyt
拆开看:
• s[0:3] — 取索引0、1、2,不包含3
• s[2:] — 省略end,从索引2一直取到结尾
• s[:3] — 省略start,从头取到索引2
切片就像剪绳子——你说从哪剪到哪,Python帮你剪下来一段。原来的绳子不变,你拿到的是剪下来的那一截。
常用字符串方法
字符串自带了很多好用的方法,用点号调用:
大小写转换
s = "Hello World" |
HELLO WORLD
hello world
去除空白和替换
s = " Hello " |
Hello
我喜欢橘子
分割和查找
sentence = "I love Python" |
['I', 'love', 'Python']
7
-1
split 把字符串按分隔符切成一个列表,find 返回子串第一次出现的位置,找不到就返回-1。
f-string格式化
想把变量拼进字符串里,之前你可能用 + 号拼接。但更方便的方式是用f-string:
name = "小明" |
我叫小明,今年13岁
我叫小明,今年13岁
在字符串引号前加一个 f,大括号 {} 里的变量会自动替换成它的值,不用手动转类型,不用加号拼。
字符串不能改
跟元组一样,字符串是不可变的。你不能直接修改其中某个字符:
s = "Python" |
TypeError: 'str' object does not support item assignment
那 upper()、replace() 这些方法不是在"改"字符串吗?不是。它们是返回一个新字符串,原来的不变:
s = "hello" |
hello
HELLO
字符串方法不是"修改"原来的字符串,而是"复印一份再改"——原件不动,你拿到的是改好的复印件。
易错点
错误1切片的end不包含 — s[0:3] 取的是索引0、1、2,不包含3。很多初学者以为 s[0:3] 会取4个字符,其实只取3个。
错误2以为方法会修改原字符串 — s.upper() 不改 s 本身,要 s = s.upper() 才行。replace、strip 也一样。
动手试试
自己先想,想完了去香农平台上写代码跑一遍验证。
|
练习1:预测输出 下面这段代码运行后,屏幕上会输出什么?
提示:空格也算一个字符,占一个索引位置。 |
|
练习2:找bug 下面这段代码想把所有的"猫"替换成"狗",但运行后发现 s 没变。哪里出了问题?
提示:回头看看"字符串不能改"那一节。 |
|
练习3:写代码 给你一个字符串 sentence = "Python is fun and Python is easy",统计里面有多少个单词(按空格分隔),打印出来。 提示:先 split,再 len。 |
去平台上手写代码
字符串不只是存文字,还能切、能找、能替换。回顾一下:
• s[i] — 索引取单个字符
• s[a:b] — 切片取一段,不包含b
• upper()/lower()/strip()/replace()/split()/find() — 常用方法
• f"...{变量}" — f-string格式化
• 字符串不可变 — 方法返回新字符串,不改原来的
这篇文章讲的是香农NOAI学习平台"Python基础"模块的第十一课。平台上有更多的练习题,写完代码点运行,对不对立刻就知道。
香农NOAI学习平台
地址:shannon.arpa.school
微信扫码登录就能用,免费。
找到「Python基础」→「字符串」,从第一道题开始写。
下一篇讲模块——Python自带了很多现成的工具箱,比如数学计算、随机数,一句import就能用。