1.引言
我们讨论过Python中的排序问题以及单词长度的查询问题,现在让我们来尝试运用循环形成一个数字序列
2.使用 while
循环遍历字符串
fruit = 'banana'
x = 0
while x < len(fruit):
letter = fruit[x]
print(letter)
x += 1 #same as x = x + 1
#b
#a
#n
#a
#n
#a
在这段代码中,我们运用了 while
循环来逐一遍历字符串 fruit
中的每个字符。首先,定义变量 x = 0
,用于表示索引位置。while
循环的条件是 x < len(fruit)
,即当 x
小于字符串长度时,循环继续。每次循环,程序从字符串中提取第 x
个字符并打印,然后将 x
自增 1(即 x += 1
)。最终,整个字符串的每个字符都会按顺序输出,直到遍历完成,这样我们便完成了对单词banana的浏览遍历
3.代码的改进
上述的方法是运用不定循环,现在我们可以用定循环来让代码更加的便捷
fruit = 'banana'
for letter in fruit:
print(letter)
#b
#a
#n
#a
#n
#a
让我们回顾一下for和in,运用for和in,我们能让变量letter连续的接受b、a、n、a、n、a,同时代表着循环会进行6次,这样我们将6行代码缩短为3行,避免了我们创建诸如上述x一样的变量或是其他令人感到麻烦的东西,不过结果依然是一样的
4.相同字母的计数
‘banana’中有很多个‘a’,对于对这个单词较为陌生或者是输入法没有拼写纠正的人来说,弄清楚一共由多少个a还是蛮重要的
word = "banana"
count = 0
for letter in word:
if letter == "a":
count += 1
print(count) #3
在这个循环中,代码逢a加1,一共有3个a,所以count将会由初始值0,+1+1+1,得到结果3
5.切片
我们讨论过了单词中每个字母在Python中的位置,也知道如何将位置表达出来,有的人可能会好奇单词的特定部分如何表示
s = 'hello world'
print(s[0:4])
print(s[3:6])
print(s[6:20])
#hell
#lo
#world
首先我们先将字符串编号
h e l l o w o r l d
0 1 2 3 4 5 6 7 8 9 10
第二行代码是将从0开始到4停止(且不包含)的字符print出来,第三行是3-6(空格也算一个字符),最后一行是6-20,但我们的编号只到10,所以我们到10停止(在Python中超过边界不是很严重的问题,但是人与人之间需要有边界感)
6.进阶切片
字符串切片的语法是 s[start:stop:step]
,其中 start
是起始位置,stop
是终止位置(直到但不包括),step
是步长,表示每次从字符串中跳过几个字符
s = 'hello world'
print(s[::2])
print(s[1::2])
print(s[::-1])
print(s[1::-2])
#hlowrd
#el ol
#dlrow olleh
#e
a.[::2]
表示从头到尾,每隔 2 个字符取一个字符,即 s
的字符按0、2、4、6、8、10 依次取出
b.[1::2]
表示从索引 1 开始,到字符串末尾,每隔 2 个字符取一个字符,按 1、3、5、7、9 依次取出
c.[::-1]
表示从尾到头,步长为 -1,表示反向遍历整个字符串
d.[1::-2]
表示从索引 1 开始,步长为 -2,反向取字符,从 1 开始,按 1、-1(即从头到尾倒数第一个字符)取出字符