Я работал над проблемой, когда менял слова на месте.Я заметил, что в зависимости от порядка моих операторов до и после моего оператора or
код не будет работать или работать.
Если я изменю
if i == len(s1) or s1[i] == ' ':
на
if s1[i] == ' ' or i == len(s1):
Я получаю сообщение об ошибке
Traceback (most recent call last):
File "reverse_words_in_place.py", line 58, in <module>
reverse_words(s1)
File "reverse_words_in_place.py", line 6, in reverse_words
if s1[i] == ' ' or i == len(s1):
IndexError: list index out of range
def reverse_words(s1):
reverse_string(s1, 0, len(s1)-1)
start_index = 0
for i in range(len(s1)+1):
if i == len(s1) or s1[i] == ' ':
reverse_string(s1, start_index, i-1)
start_index = i + 1
return s1
def reverse_string(s1, first, last):
while(first < last):
s1[first], s1[last] = s1[last], s1[first]
first += 1
last -= 1
s1 = ['c', 'a', 'k', 'e', ' ',
'p', 'o', 'u', 'n', 'd', ' ',
's', 't', 'e', 'a', 'l']
reverse_words(s1)
# Prints: 'steal pound cake'
print(''.join(s1))
Выходные данные для этого кода
steal pound cake
, если
if i == len(s1) or s1[i] == ' ':
Почемуважно, в каком порядке эти заявления?