Для цикла не повторяется ожидаемое количество времени - PullRequest
2 голосов
/ 04 июня 2019

Я пытаюсь написать код для практики на python.После того, как пользователь введет строку и число, которое является фактором длины строки, вывод должен быть обратным к строке, разделенной на сегменты, равные введенному числу.Моя проблема в том, что вывод обрывается, что, по-моему, является проблемой, вызванной состоянием цикла for.

def reverse_and_slice(string, k):
    i=0
    n=len(string)
    j=0
    revstring=string[::-1]
    finalstring=''
    for i in range(n//k):
        finalstring+=revstring[j:(i+1)*k] + ' '
        j+=(i+1)*k
    i+=1
    print(finalstring)

Я пытаюсь выполнить это с помощью цикла for.123456789 должен печататься как 987 654 321. Однако в настоящее время он печатается как 987 654, без трех последних цифр.Более длинные входы аналогично обрезаются только двумя сегментами длиной k.

1 Ответ

1 голос
/ 04 июня 2019

Ваш цикл повторяется правильное количество раз.Вы можете просто проверить это, напечатав i в цикле.Проблема с j.На последней итерации оно равно 9, поэтому revstring[9:9] пусто.И это вызвано + до =: j+=(i+1)*k Вы увеличиваете j вместо изменения значения.

def reverse_and_slice(string, k):
    i=0
    n=len(string)
    j=0
    revstring=string[::-1]
    finalstring=''
    for i in range(n//k):
        finalstring+=revstring[j:(i+1)*k] + ' '
        j = (i+1)*k
    i+=1  # this line is also not needed
    print(finalstring)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...