Share This
Связаться со мной
Крути в низ
Categories
//Многострочный пользовательский ввод в Python

Многострочный пользовательский ввод в Python

28.02.2024Category : Python

Часто бывает необходимо получить от пользователя сразу несколько значений и сохранить их, например, в список. В этой статье мы рассмотрим два варианта чтения многострочного ввода: до введения пользователем стоп-слова или до прерывания ввода при помощи сочетания клавиш.

Ввод пользователем нескольких строк

Чтобы получить многострочный пользовательский ввод:

  1. Используйте цикл while для итерации до тех пор, пока пользователь вводит значения.
  2. На каждой итерации добавляйте введенные пользователем значения и символ новой строки в список.
  3. Если пользователь нажимает Enter, не введя значения, выходите из цикла.
lines = []  while True:     user_input = input()      # 👇️ Если пользователь нажал Enter без ввода значения, прервать цикл     if user_input == '':         break     else:         lines.append(user_input + 'n')   # 👇️ prints list of strings print(lines)  # 👇️ join list into a string print(''.join(lines)) 

mnogostrochnyj polzovatelskij vvod v python eddc748 - Многострочный пользовательский ввод в Python

Мы использовали цикл while, работающий до тех пор, пока пользователь вводит значения.

На каждой итерации мы проверяем, не нажал ли пользователь Enter, не введя значения, чтобы выйти из цикла while True.

Условие выхода из цикла может быть любым. Например, вы можете использовать стоп-слово, такое как done или quit.

Оператор break прерывает цикл for или while.

Если пользователь вводит значение, мы используем метод list.append(), чтобы добавить это значение и символ новой строки в список.

Метод list.append() добавляет элемент в конец списка.

Чтение пользовательского ввода до EOF в Python

В качестве альтернативы можно использовать метод sys.stdin.readlines() для чтения пользовательского ввода до EOF.

EOF (аббревиатура англ. end of file — конец файла) в компьютерной терминологии является индикатором операционной системы, означающим, что данные в источнике закончились. Источниками данных обычно являются файлы и потоки.
Для указания терминалу в UNIX и Linux «EOF» следует воспользоваться комбинацией клавиш Ctrl+D. В Windows — Ctrl+Z.

Википедия

Метод readlines() вернет список, содержащий строки.

Пользователь может нажать CTRL + D (Unix) или CTRL + Z (Windows) для выхода.

import sys  # 👇️ Для выхода пользователь должен нажать Ctrl + D (Unix) или Ctrl + Z (Windows)  print('Press CTRL + D (Unix) or CTRL + Z (Windows) to exit')  user_input = sys.stdin.readlines()  # 👇️ Получить список строк print(user_input)  # 👇️ Объединить элементы списка в строку print(''.join(user_input))

mnogostrochnyj polzovatelskij vvod v python 6cce297 - Многострочный пользовательский ввод в Python

stdin используется для интерактивного пользовательского ввода.

Метод readlines() возвращает список, введенный пользователем.

Вы можете использовать метод str.join(), если вам нужно объединить список строк в одну строку.

# a # b # c print(''.join(['an', 'bn', 'cn']))

Если вам нужна только строка, содержащая строки, используйте метод sys.stdin.read().

import sys   user_input = sys.stdin.read()  print(user_input)

mnogostrochnyj polzovatelskij vvod v python 662d3fe - Многострочный пользовательский ввод в Python

Метод sys.stdin.read() возвращает строку, содержащую строки, введенные пользователем.

В качестве альтернативы можно использовать оператор try/except.

Чтение пользовательского ввода до EOF с использованием try/except

Этот процесс состоит из трех шагов:

  1. Используйте цикл while для итерации до EOF.
  2. На каждой итерации добавляйте вводимые пользователем данные в список.
  3. Перехватите исключение EOFError в блоке except и выйдите из цикла.
lines = []   while True:     try:         lines.append(input())     except EOFError:         lines_str = 'n'.join(lines)         print(lines_str)          break  print(lines)

mnogostrochnyj polzovatelskij vvod v python 36fa1ac - Многострочный пользовательский ввод в Python

Мы использовали цикл while для итерации до EOF.

Если пользователь нажмет CTRL + D (Unix) или CTRL + Z (Windows), возникнет исключение EOFError, которое будет обработано в блоке except.

Заключение

В этой статье мы рассмотрели, как принимать многострочный пользовательский ввод. Это делается в цикле, который либо прерывается пользователем при помощи сочетания клавиш, либо имеет определенное условие выхода (ввод какого-нибудь слова или ввод пустой строки).

Перевод статьи «Multiple lines user Input in Python».

  • 0 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close