有人可以解释这段代码如何处理范围和切片?

时间:2018-04-05 22:25:15

标签: python-3.x

s = 'eljwboboblejr'  # dont paste into grader
count = 0
for i in range (len(s)): 
    if s[i:i+3]== 'bob':
        count+=1 
print('Number of times bob occurs is: ' + str(count))

我不知道len在这里工作的方式,或者s [i:i + 3] ==' bob'

2 个答案:

答案 0 :(得分:0)

所以这里发生的是i遍历所有字母,并在每个循环中按ii+3切割所有字母。 len正在做的只是取s的长度(基本上有多少个字符)并将其作为整数返回。 s[i:i+3] == 'bob'正在做的是确定切片的字符串是否等于'bob'。因此,假设i表示s字符串中的所有字母。因此,如果ii+3包含的切片字符串中包含“bob”,则返回true。这不是最好的解释,但我希望它有所帮助。

答案 1 :(得分:0)

len的文档在这里: https://docs.python.org/3.2/library/functions.html#len

它将在字符串中实现为一个神奇的私有函数(我相信__len__)。

范围的文档在这里: https://docs.python.org/3.2/library/functions.html#range

使用一个arg,range会生成0到该arg的整数0(不包括arg本身)。

循环中的切片在后续迭代中计算为'elj',然后是'ljw',然后是'jwb',....切片[a:b]不包括第b个元素。