Почему моя функция не побуждает меня вводить данные? - PullRequest
0 голосов
/ 19 января 2020

Я использую Python IDE 3. Моя цель такова: если у меня есть строка текста 'ABCDEFGHIJKL', я хочу отсортировать ее по группам, например, по три группы ('ADGJ', 'BEHK', 'CFIL'). Я требую ввода для этого, но подсказки не отображаются, и я не могу ввести ввод. Вот мой код:

#data
code_text = input('Text: ').lower()
code_skip = int(input('Shift length: '))
code_list = []
#function
def countSkip(text, shift, listt):
    i = 0
    group = 1

    if group <= shift:
      for e in text:
#make sure the set starts at the right place
        if e.index()+1 < group:
          pass
        elif shift != 0:
          if i = shift:
            listt.append(e)
            i = 0
          i += 1
        else:
          listt.append(e)
          group += 1

Вызов функции

countSkip(code_text, code_shift, code_list)

1 Ответ

0 голосов
/ 19 января 2020

Есть несколько вещей, которые мешают вашему коду работать, на что люди указывали в комментариях. Вместо того, чтобы пытаться анализировать ваш код и заставить его работать, я написал гораздо более краткую функцию, которая даст вам результаты, к которым вы стремитесь

def text_splitter(input_text, set_length):
    num_sets = int(len(input_text)/set_length)
    split_text = ["".join([input_text[(n * num_sets) + m] for n in range(set_length)]) for m in range(num_sets)]
    return split_text

text_to_split = input('Text: ').lower()
len_set = int(input('Set Length: '))

text_list = text_splitter(text_to_split, len_set)

Извините, я изо всех сил пытался назвать переменные в эффективном образом, но функция выше использует выражение списка, чтобы получить нужные вам результаты. Имейте в виду, что если вы используете 7-буквенную строку и запрашиваете наборы длины 2, последняя буква не будет добавлена. Однако это не должно быть слишком сложно проверить и исправить. Например, вы можете добавить этот код в функцию или около начального ввода для заданной длины:

    while len(input_text) % set_length != 0:
        set_length = int(input("The text is length " + str(len(input_text)) + " please enter a different set length: "))
...