Это была проблема HW в edX, которая попросила меня определить, сколько раз слово "bob" встречалось в какой-либо строке. Я нашел решение, но я не уверен, почему оно работает. Для кода (1):
CODE (1)
s = 'azcbobobegghakl'
count = 0
for i in range(len(s)):
if s[i:i+3] == "bob":
count += 1
print(count)
В том же HW возникла проблема, которая попросила меня найти самую длинную подстроку в алфавитном порядке в некоторой строке , В начале поиска решения я столкнулся с ошибкой индекса, потому что пытался сослаться на индекс, выходящий за пределы диапазона; показано в этом коде:
КОД (2)
s = 'azcbobobegghakl'
temp = ''
longest = ''
for i in range(len(s)):
if s[i] <= s[i+1]:
temp += s[i+1]
if len(temp) > len(longest):
longest = temp
else:
temp = s[i+1]
print(longest)
ОШИБКА (2)
Traceback (most recent call last):
File "C:/Users/vchi/PycharmProjects/edX/introduction.py", line 5, in <module>
if s[i] <= s[i+1]:
IndexError: string index out of range
Почему КОД (1) не сталкивается с та же самая ошибка, которую CODE (2) получил, когда i> len (s) -4 и s [i: i + 3] пытаются сослаться на вещи, которые находятся за пределами? Заранее спасибо!