Считывание нескольких строк из input()
Функция input() ждёт, пока пользователь нажнёт на клавиш Enter , и затем немедленно возвратит введенную строку, также когда пользователь затем что-то писал, это или потеряется, или передается последующей команде на ввод с клавиатуры.
Значит, нельзя 1 командой input() ввести более строк — нужно это повторить, например в таком цикле:
text = "" while True: x = input() if x: text += x + " " else: break print(text)
Привет как дела ?
и ещё одного нажатия на Enter получится вывод
Привет как дела ?
Программирование в «Эврике»
В языке Python имеется встроенная функция input(), с помощью которой можно читать ввод пользователя. Эта функция принимает необязательный строковый аргумент (который выводится в консоли как строка приглашения к вводу) и ожидает, пока пользователь введет ответ и завершит ввод клавишей Enter (или Return). Если пользователь не введет никакой текст и просто нажмет клавишу Enter, функция input() вернет пустую строку, в противном случае она возвращает строку, содержащую ввод пользователя без символа завершения строки.
Таким образом, все, что ввел пользователь, можно считать в одну строковую переменную с помощью команды
s = input()
Если предполагается, что вводится число (а не набор символов), придется преобразовать входную строку к числовому типу:
n = int(input()) # для целых
d = float(input()) # для дробных чисел
Если в строке вводится не одно число, а сразу несколько (например, четыре), придется воспользоваться функцией map:
a, b, c, d = map (int, input().split())
Что при этом происходит?
input().split() — разделить строку на части по пробелам
map — применить
int — эту операцию (преобразование в число) к каждой части
input().split() — разделить строку на части по пробелам.
Как прочитать файл построчно в Python
Существует много способов чтение из файла построчно в Python. Вы можете считать строки в список или обращаться к каждой из строк в цикле при помощи итератора или вызова функции объекта file.
В этом руководстве мы научимся считывать файл построчно, используя функции readline() , readlines() и объект файла на примерах различных программ.
Пример 1: Чтение файла построчно функцией readline()
В этом примере мы будем использовать функцию readline() для файлового объекта, получая каждую строку в цикле.
Как использовать функцию file.readline()
Следуйте пунктам приведенным ниже для того, чтобы считать файл построчно, используя функцию readline() .
- Открываем файл в режиме чтения. При этом возвращается дескриптор файла.
- Создаём бесконечный цикл while.
- В каждой итерации считываем строку файла при помощи readline() .
- Если строка не пустая, то выводим её и переходим к следующей. Вы можете проверить это, используя конструкцию if not . В противном случае файл больше не имеет строк и мы останавливаем цикл с помощью break .
# получим объект файла file1 = open("sample.txt", "r") while True: # считываем строку line = file1.readline() # прерываем цикл, если строка пустая if not line: break # выводим строку print(line.strip()) # закрываем файл file1.closeПривет! Добро пожаловать на PythonRu. Удачи в обучении!Пример 2: Чтение строк как список функцией readlines()
Функция readlines() возвращает все строки файла в виде списка. Мы можем пройтись по списку и получить доступ к каждой строке.
В следующей программе мы должны открыть текстовый файл и получить список всех его строк, используя функцию readlines() . После этого мы используем цикл for, чтобы обойти данный список.
# получим объект файла file1 = open("sample.txt", "r") # считываем все строки lines = file1.readlines() # итерация по строкам for line in lines: print(line.strip()) # закрываем файл file1.closeПривет! Добро пожаловать на PythonRu. Удачи в обучении!Пример 3: Считываем файл построчно из объекта File
В нашем первом примере, мы считываем каждую строку файла при помощи бесконечного цикла while и функции readline() . Но Вы можете использовать цикл for для файлового объекта, чтобы в каждой итерации цикла получать строку, пока не будет достигнут конец файла.
Ниже приводится программа, демонстрирующая применение оператора for-in, для того, чтобы перебрать строки файла.
Для демонстрации откроем файл с помощью with open. Это применимо и к предыдущим двум примерам.
Массивы
Элементы списка могут вводиться по одному в строке, в этом случае строку можно считать функцией input(). После этого можно использовать метод строки split, возвращающий список строк, разрезав исходную строку на части по пробелам. Пример:
A = input().split()
Если при запуске этой программы ввести строку 1 2 3, то список A будет равен ['1', '2', '3']. Обратите внимание, что список будет состоять из строк, а не из чисел. Если хочется получить список именно из чисел, то можно затем элементы списка по одному преобразовать в числа:
for i in range(len(A)):
A[i] = int(A[i])Используя функции языка map и list то же самое можно сделать в одну строку:
A = list(map(int, input().split()))
Объяснений, как работает этот код, пока не будет. Если нужно считать список действительных чисел, то нужно заменить тип int на тип float.
У метода split есть необязательный параметр, который определяет, какая строка будет использоваться в качестве разделителя между элементами списка. Например, метод split('.') вернет список, полученный разрезанием исходной строки по символам '.'.
Используя “обратные” методы можно вывести список при помощи однострочной команды. Для этого используется метод строки join. У этого метода один параметр: список строк. В результате получается строка, полученная соединением элементов списка (которые переданы в качестве параметра) в одну строку, при этом между элементами списка вставляется разделитель, равный той строке, к которой применяется метод. Например программа
A = ['red', 'green', 'blue']
print(' '.join(A))
print(''.join(A))
print('***'.join(A))выведет строки 'red green blue', redgreenblue и red***green***blue.
Если же список состоит из чисел, то придется использовать еще и функцию map. То есть вывести элементы списка чисел, разделяя их пробелами, можно так:
print(' '.join(map(str, A)))