Построчный ввод на Python
Мне нужно составить список из строк, построчно вводимых с клавиатуры. Например, дано:
Я должен получить список из строк: [«20», «30», «005»] . Заранее не известно, сколько строк будет введено. Я не понимаю, как отследить конец ввода. Если я буду писать так:
a = [] while input(): a.append(input())
то получается, что первый инпут я не записываю в список, а второй записываю, и если второго инпута нет, то будет ошибка, так как нечего записывать в список. Подскажите, как сделать. Я только начал изучать Питон (Пайтон). Благодарю заранее за любой совет.
Ответы (4 шт):
a = [] while True: try: a.append(input()) except EOFError: break print(a)
Когда вывод закончится и input() не сможет считать очередную строку, то породится исключение EOFError , которое можно поймать и обработать. В этот момент поток ввода завершится.
In [9]: while True: . inp = input() . if not inp: break . array.append(inp)
Цикл остановится если ввод будет пуст.
a=[] i=True while i: i=input() if i: a.append(i)
Если оставить строку пустой, ввод прекратится.
Вы можете применить функцию input() из стандартного модуля fileinput, которая читает «до бесконечности» ввод из стандартного потока — пока не встретится признак конца файла (EOF — End of File):
import fileinput a = [] for s in fileinput.input(): a.append(s.strip())
Ввод окончится симуляцией признака конца файла — нажатием на Ctrl + D (вместо ввода дальнейшего числа) — см. тоже этот ответ на вопрос Признак конца ввода Python.
Метод strip() применяется для удаления символа \n в конце введенных строк.
Признак конца ввода Python
На стандартном потоке ввода задаётся последовательность целых чисел.
Каждое число последовательности не меньше -20000000 и не больше 20000000 .
Всего последовательность состоит не более чем из 40 чисел.
Последовательность завершается признаком конца ввода.
На стандартный поток вывода напечатайте сумму этих чисел.
Не могу понять что такое признак конца ввода, пытался сделать через input() кидает WrongAnswer . Предполагаю, что нужно делать через sys.stdin() , но как, не могу понять, каким образом нужно остановить чтение из потока, что такое признак конца ввода, и как это все сделать на Питоне?
По С++ нашел кучу ответов, но не могу применить это на Питоне.
Ответы (2 шт):
Признаком конца файла является EOF. Например, функции чтения языка Си вернут константу EOF , если данные в файле закончились.
В Питоне прочитать все данные со стандартного потока ввода можно так:
from sys import stdin text = stdin.read()
Также можно обрабатывать данные по строкам:
from sys import stdin for line in sys.stdin: #
В вашем случае можно получить список введённых чисел так:
from sys import stdin text = stdin.read() l = list(map(int, text.split()))
Случай «конец файла» возникает, когда уже нету что читать из источника дат, обычно из файла.
Но ввод из терминала практически никогда не окончатся, и потому в каждой операционной системе выделена комбинация клавишей (обычно Ctrl + D ), которая драйвером терминала интерпретируется как конец файла.
Значит, ввод для вашей программы может выглядеть так:
после чего пользователь нажмёт (на новой строке) на Ctrl + D .
Читать стандартный поток ввода удобно с применением метода input() стандартного модуля fileinput, который распознает Ctrl + D как конец ввода:
import fileinput total = 0 for line in fileinput.input(): # читает строку после строки, пока нет Ctrl+D lst = line.split() # lst будет списком отдельных чисел, но как строк numbers = map(int, lst) # применит функцию int к всякому элементу списка lst total += sum(numbers) # добавит сумму чисел из списка numbers к total print("Сумма:", total)
1 2 3 4 5 6 7 8 9 10 Сумма: 55
(После ввода последнего числа — 10 — пользователь нажал на Enter и затем — на новой строке — на Ctrl + D .)
Файловый ввод-вывод¶
Открыть файл file_path в режиме mode . Функция возвращает file object . Полная сигнатура функции приведена в официальной документации: open. Режим может принимать значения:
Записать строку text в файл.
Прочитать все данные из файла
# Открываем файл для записи out_file = open('data.txt', 'w') # Пишем в файл две строки out_file.write('Hello\n') out_file.write('World\n') # Закрываем файл out_file.close() # Снова открываем этот же файл, но уже для чтения in_file = open('data.txt', 'r') # Файл — итерируемый объект. Следовательно, для # его построчного чтения можно использовать цикл for for line in in_file: print(f'Got line: line>') in_file.close()
Задачи¶
- Написать программу, которая будет получать у пользователя строку и записывать её в файл “data.txt”
- Разработать приложение, которое записывает в файл все строки, введенные пользователем. Признак конца ввода — пустая строка. Пример:
Введите имя файла: data.txt Начните вводить строки > one > two > three > Файл записан.
Введите имя файла: data.txt 1 one 2 two 3 three
Используйте метод строки rstrip() , чтобы избавиться от лишних переносов сток. После этого результат работы программы примет вид:
Введите имя файла: data.txt 1 one 2 two 3 three
one two three four five six seven eight nine ten
Введите имя входного файла: data.txt Введите максимальное количество строк: 3
После выполнения программы должны быть созданы файлы 1.txt , 2.txt и так далее. В файле 1.txt будут сроки:
Дополнительные задачи¶
- Разработайте приложение, которое выводит N первых строк файла.
- Разработайте приложение, которое выводит N последних строк файла.
© Copyright Revision d00c0df4 .
Versions latest Downloads html On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.
Как ввести признак конца ввода?
Признак конца ввода
Что является признаком конца ввода?
С клавиатуры вводятся символы. Признак конца ввода – ‘0’ Определить, сколько было введено пар следующих друг за другом
С клавиатуры вводятся символы. Признак конца ввода – ‘0’ Определить, сколько было введено пар.
Как считать целые числа, не определяя признак конца ввода?
Пользователю предлагается ввести несколько целых чисел (количество заранее неизвестно). Должна быть.
Признак конца ввода
привет! я тут решил немного порешать задачки и с начала подумал ознакомиться с тестирующей.
Сообщение от nokados
Признак конца ввода
Всем привет, есть задача: На стандартном потоке ввода задаётся последовательность целых чисел.
признак конца ввода
Здравствуйте. Учу С++ по книге Дейтела так вот там пример программы #include <iostream>.
Задача, на признак конца ввода
Помогите пожалуйста
Не работает признак конца ввода данных с клавиатуры
только начал изучать с++, и сразу же появилась проблемка) создал консольное приложение, написал.
Составить программу, Признак конца ввода C++ Двоичные числа
Создать программу, в которой с клавиатуры вводится последовательность чисел, признак конца ввода -.
Вводится последовательность чисел. Признак конца ввода – число 777.
Вводится последовательность чисел. Признак конца ввода – число 777. Записать алгоритм решения.
Файловый ввод-вывод¶
Открыть файл file_path в режиме mode . Функция возвращает file object . Полная сигнатура функции приведена в официальной документации: open. Режим может принимать значения:
Записать строку text в файл.
# Открываем файл для записи out_file = open('data.txt', 'w') # Пишем в файл две строки out_file.write('Hello\n') out_file.write('World\n') # Закрываем файл out_file.close() # Снова открываем этот же файл, но уже для чтения in_file = open('data.txt', 'r') # Файл — итерируемый объект. Следовательно, для # его построчного чтения можно использовать цикл for for line in in_file: print(f'Got line: line>') in_file.close()
Задачи¶
- Разработать приложение, которое записывает в файл все строки, введенные пользователем. Признак конца ввода — пустая строка. Пример:
Введите имя файла: data.txt Начните вводить строки > one > two > three > Файл записан.
Введите имя файла: data.txt 1 one 2 two 3 three
Используйте метод строки rstrip() , чтобы избавиться от лишних переносов сток. После этого результат работы программы примет вид:
Введите имя файла: data.txt 1 one 2 two 3 three
one two three four five six seven eight nine ten
Введите имя входного файла: data.txt Введите максимальное количество строк: 3
После выполнения программы должны быть созданы файлы 1.txt , 2.txt и так далее. В файле 1.txt будут сроки:
Дополнительные задачи¶
- Разработайте приложение, которое выводит N первых строк файла.
- Разработайте приложение, которое выводит N последних строк файла.
© Copyright Revision d00c0df4 .
Versions latest Downloads html On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.