#少儿编程#
因为会汉语拼音了,小po最近迷上打字,他经常会为我们家制作一张购物清单(其实就是他想吃的东西),如图1,然后把这张购物清单作为字符串赋值到一个变量里。
图1
这次他刚做完,就发觉奶豆和奶棒都写得太简单了,想改一下。可是又不想重新打,就想着如果能直接替换就好了。Python当然能满足小po这个需求,不过在学习如何替换之前,我们先了解一下字符串得长度。
字符串的长度
如同列表和元组一样,字符串也有长度,字符串的长度就是字符的个数。Python语言提供了获取字符串长度的内置函数len():
len(s):
参数:s---字符串
返回值:字符串长度
图2红框内是适用len()方法获取字符串“小po” 的长度。“小po”有3个字符:“小”、“p”、“o”,所以其长度为3。
图2
注意:
字符串的长度并不等于它的最大索引,因为索引是从0开始的。
字符串的替换
在了解如何替换之前,我们先来看一个术语:子字符串。
术语箱
子串(子字符串):在较大的字符串中查找较小的字符串,那个较小的字符串就称为子字符串(substring)。
现在我们就来看看如何帮助小po实现替换奶豆和奶棒的想法。Python语言替换字符串的内置函数是replace()。
replace():把字符串(str)中的旧字符串(old)替换成新字符串(new)
语法:str.replace(old,new)
参数:old---将要被替换的子字符串
new---新字符串,用于替换old子字符串
返回值:生成新的字符串
下面我们来一起看看replace()函数是怎么用的,如图3:
图3
红框内的代码qingdan_1.replace("奶豆",naidou),意思就是将变量qingdan_1的字符串中的字符串“奶豆”换成“奶豆:酸奶味”。我们可以看到,替换后,原来的“3、奶豆;”变成了“3、奶豆:酸奶味;”。
那么现在我们要把“奶棒”的内容也改一改呢?如图4:
图4
图4红框中的代码qingdan_3 = qingdan_2.replace("奶棒",naibang),意思是将变量qingdan_2的字符串中的字符串“奶棒”替换成“奶棒:葡萄味”,并把新的字符串赋值给变量qingdan_3。
注意:
str.replace(old,new)函数执行过后,并不会改变原字符串str,而是生成一个新的字符串,这个新的字符串需要存到另一个变量里。
字符串检索
我们有时也需要在字符串中查找内容,比如小po忘了是否在清单中写上巧克力,他现在想搜索一下,看看清单qingdan_3上有没有“巧克力”。Python语言提供了两个内置函数来实现检索的目的,find()和index()。
find()
find()方法是Python语言提供的内置方法,它是检测字符串是否包含子字符串。
find():检测字符串str1中是否包含子字符串subStr
语法:str1.find(subStr,beg=0,end=len(str1))
参数:str1---被检索的字符串
subStr---是否包含的子字符串
beg---开始索引,默认为0
end---结束索引,默认为被检索的字符串的长度
返回值:如果包含,则返回包含子字符串开始的索引值,否则返回-1
下面我们来看看find()函数怎么用,如图5:
图5
图5中代码① qingdan_3.find(“巧克力”):检测字符串qingdan_3是否包含子字符串“巧克力”,返回的值为19,说明“巧克力”在索引19的位置,也就是说qiangdan_3是包含“巧克力”这个字符串的。
代码② qingdan_3.find(“曲奇”):返回值为-1,说明qingdan_3字符串并不包含“曲奇”这个字符串。
index()
index():检测字符串中是否包含子字符串
语法:str1.index(subStr,beg=0,end=len(str1))
参数:str1---被检索的字符串
subStr---是否包含的子字符串
beg---开始索引,默认为0
end---结束索引,默认为被检索的字符串的长度
返回值:如果包含,则返回包含子字符串开始的索引值,否则抛出异常
下面我们来看看index()方法怎么使用,index()方法和find()方法的使用方式一样,如图6:
图6
代码① qingdan_3.index(“巧克力”):检测字符串qingdan_3是否包含子字符串“巧克力”,返回的值为19,说明“巧克力”在索引19的位置,也就是说qiangdan_3是包含“巧克力”这个字符串的。
代码② qingdan_3.index(“曲奇”):直接抛出异常,说明qingdan_3字符串并不包含“曲奇”这个字符串。
注意:
从这我们可以看出index()和find()的区别,当我们要找的子字符串并不在被检索的字符串里时,find()方法是返回-1这个值,而index()则是中断程序,直接抛出异常。
小朋友们,我们可以这样理解,find()是查找的意思,当找不到我们要找的内容,find()以返回-1的形式告诉我们没有这个内容。而index()是索引的意思,当我们要找的内容不在这个字符串中,自然是求不出索引值的,所以直接报错了。
in操作
对于检索字符串,虽然Python语言提供了find()和index()两个内置方法,但这不代表我们只能用这两个方法,我们依然可以根据实际需求通过别的方式来实现检索的目的。比如Python语言中的in操作。
in操作是判断是否包含,如图7:
图7
代码① "巧克力" in qingdan_3:判断“巧克力”是否在qingdan_3字符串中,包含的话就返回True;
代码② “曲奇” in qingdan_3:判断“曲奇”是否在qingdan_3字符串中,不包含就返回False。
原创不易,请勿抄袭。欢迎大家关注我,和我多交流,如果你喜欢,请转赞评三连,谢谢。