1

На вход копируются строки вместе столбиком:

abcd
----------
efg
----------

Не получается печатать длину каждой строки, печатается только длина первой.

for x in input().splitlines():
    print(len(x))
gil9red
  • 77,085
  • Не уверен, но кажется ваш пример совпал с форматирование markdown. Поместите пример в тег код или цитата. Кнопка править – gil9red Jun 26 '18 at 10:43
  • Не понял, что вы имеете в виду, мне нужно, чтобы не запоминая программа выводила длинну каждой строки символов, копируемой в консоль. Каждая строка символов копируется на отдельной строчке. – Сергей Бараненков Jun 26 '18 at 10:53
  • У вас в вопросе данные такие: abcd efg, но в тексте вопроса abcd----------efg---------- что из этого истинно? А по поводу вашей проблемы, скорее всего когда вы вставляете текст в input, то в него попадает первая строка abcd\n, потому что она первая заканчивается на \n. Почему бы вам данные для программы не брать из файлика? – gil9red Jun 26 '18 at 10:56
  • Верный текст вопроса:), можно ли сделать, чтобы вычислялась и печаталась длинна каждой строки?(Я не знаю как это правильно написать, но все строки копируются за 1 раз в input столбиком) – Сергей Бараненков Jun 26 '18 at 11:01
  • 1
    Ок, я подправил форматирование вопроса. Мне кажется, для вашей задачи Input не очень подходит, предлагаю из файлика вытаскивать. Показать? – gil9red Jun 26 '18 at 11:07
  • Спасибо, попробую разобраться сам как вытаскивать из файла:) – Сергей Бараненков Jun 26 '18 at 11:12
  • в сторону: в общем случае "длина строки" это не просто len(). К примеру, есть wcwidth модуль. https://ru.stackoverflow.com/q/52873/23044 – jfs Jun 26 '18 at 13:46

2 Answers2

2
import fileinput

for line in fileinput.input():
    print(len(line) - 1)             # Длина вез знака '\n'

Для ввода строк используется метод input() вставленного модуля fileinput.

Строки читаются до тех пор, пока ввод не окончится признаком конца файла (Ctrl+D).
Когда вы хотите окончить ввод простым нажатием на клавишу Enter, прибавите код для теста ввода строки с длиной 1 (только знака конца строки: \n):

import fileinput

for line in fileinput.input():
    if len(line) == 1:
        break
    print(len(line) - 1)
MarianD
  • 17,120
  • в конце может не быть символа новой строки. Можно len(line) - line.endswith('\n') – jfs Jun 27 '18 at 14:18
0

input вызывается и читает один раз (до перевода строки). Если вызывать input в цикле, то получится что-то похожее. Но лучше используйте sys.stdin

Alex Titov
  • 1,261