Почему цикл for разделяет строки пользовательского ввода?

#python #python-2.7

#python #python-2.7

Вопрос:

Почему при циклическом просмотре результатов пользовательского ввода вставленные значения разделяются?

 text = ("Insert something: ")
inputs = raw_input(text).strip("n")

for i in inputs:
    print i
  

Результаты

 Insert something: 01 02 03
0
1

0
2

0
3
  

ожидаемый результат:

 01
02
03
  

Комментарии:

1. Потому что вы выполняете итерацию по строке, поэтому символ за символом. Почему он волшебным образом разделяется на пробелы?

Ответ №1:

Строки — это последовательности, содержащие отдельные символы. Вы выполняете итерацию по inputs строке, поэтому получаете отдельные символы.

Если вы хотите выполнить итерацию по списку слов, разделенных пробелами, вам следует сначала разделить строку на список:

 for i in inputs.split():
  

.strip('n') Вызов результата raw_input() является избыточным по двум причинам:

  • raw_input() возвращает введенную строку без перевода строки, поэтому здесь нет необходимости удалять символ новой строки.
  • str.split() метод без аргументов разбивает пробелы произвольной длины (пробелы, табуляции, новые строки и т.д.) И Удаляет пробелы в начале и конце. Так что, даже если бы была новая строка для удаления, str.split() позаботился бы об этом за вас.

Комментарии:

1. О, как мне не стыдно, я должен был подождать немного дольше, прежде чем публиковать этот вопрос.

Ответ №2:

Может быть, вы просто перепутали split() и strip()?

 text = ("Insert something: ")
inputs = raw_input(text).split(" ")

for i in inputs:
    print i
  

Комментарии:

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