探索Python中的循环与字符串操作

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(即从头到尾倒数第一个字符)取出字符

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chennn__

感谢!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值