Глюк ввода в функцию - PullRequest
       1

Глюк ввода в функцию

0 голосов
/ 24 сентября 2019

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

def lenth(paragraph):
    splited = paragraph.split(" ")
    txt = len(splited)
    if txt == 1:
        print(txt, "word")
    else:
        print(txt, "words")
lenth(input("Enter the paragraph: "))

Попробуйте этот пункт, исключая --- Начало --- или --- Конец ---

---Start---
This is for testing purposes only and 
for the 
checking 
of the function
---End---

1 Ответ

0 голосов
/ 24 сентября 2019

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

lines = []

while True:
    line = input()
    if not line: # exit loop when empty line.
        break
    lines.append(line)

text = '\n'.join(lines)

print('>', text, '<')

Проблема может бытьесли у вас есть абзац с пустой строкой между другими строками.В Linux и, возможно, в Windows, в некоторых программах вы можете использовать Ctrl+D, чтобы сообщить программе, что это конец файла, а затем она отправляет ошибку EOF (End Of File)

lines = []

while True:
    try:
        line = input()  # press `Ctrl+D` to end of data
        lines.append(line)
    except EOFError:
        break

text = '\n'.join(lines)

print('>', text, '<')

Используя sys.stdin.read(), вы можетенапишите короче

import sys

try:
    text = sys.stdin.read()  # press `Ctrl+D` to end of data
except EOFError:
    pass

print('>', text, '<')

Или, может быть, даже без try/except

import sys

text = sys.stdin.read()  # press `Ctrl+D` to end of data

print('>', text, '<')

Должно работать также с текстом, перенаправленным из файла

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