print () печатает только каждый второй ввод - PullRequest
0 голосов
/ 19 ноября 2018

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

import re
i=1

def inputFilterText():
    inputRaw = input('input: ')
    inputFiltered = re.sub('[^a-zA-Z]+', '', inputRaw)
    return inputFiltered

while i > 0:
    inputFilterText()
    print(inputFilterText())

А вот мой вывод:

output

Я не совсем уверен, что происходит, но я предполагаю, что это логическая ошибка. Я только начал использовать Python, поэтому любая помощь приветствуется.

PS
«Пока» присутствует только для упрощения тестирования, его можно опустить.

Ответы [ 3 ]

0 голосов
/ 19 ноября 2018

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

Чтобы исправить это, удалите строку inputFilterText(). Пример рабочего кода.

import re
i=1

def inputFilterText():
    inputRaw = input("input: ")
    inputFiltered = re.sub(""[^a-zA-Z]+, "", inputRaw)
    return inputFiltered

while i > 0:
    print(inputFilterText())

Кроме того, в будущем отправляйте код в виде необработанного текста, а не снимков экрана.

0 голосов
/ 19 ноября 2018

Могу ли я предложить здесь использовать переменную, вы ничего не делаете с первым вызовом фильтра (именно поэтому он запрашивает первый раз) и вторым, который вы только печатаете.

while True:
    txt = inputFilterText()
    #do some stuff if needed
    print(txt)
0 голосов
/ 19 ноября 2018

Вы вызываете inputFilterText дважды. Один раз в печати () и один раз до. Это заставляет код запрашивать ввод дважды перед печатью второго ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...