Построчный ввод
Проблема в том что цикл не остановится пока я в input() не подам пустую строку. Как решить вопрос если мне не нужен как раз этот лишний enter.
Пример входных данных:
24:03:12 — 31:12:13
17:02:13 — 16:04:12
02:09:12 — 02:09:13
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Построчный вывод в JSON
Здравствуйте. Есть код import json with open(‘input.txt’) as file: result = <> for.

Построчный расчет для данных из файла Эксель
Исходные данные в файле эксель a b c d 82 55 98 10 18 75 13 9 17 19 44 69 77 95 69 37.

Построчный обход двумерного массива без цикла средствами Numpy
Здравствуйте. Дан двумерный массив. В каждой строке необходимо найти минимальное значение и.

Что работает быстрее, ввод с консоли или ввод с файла?
вводятся множество списков программа удаляет первое число списка и удаляет все числа в этом списке.

Построчный вывод
Здравствуйте! Вводятся строки через " : ", пока не будет введена пустая строка, затем вводится.
Позиционные аргументы — Python: Функции
У функций, которые мы изучали ранее, были в основном позиционные аргументы. Когда мы вызываем такие функции, значения в их аргументы подставляются согласно позиции их имен в определении функции. Например, мы вызываем следующую функцию:
def add(x, y): return x + y
В этом случае с аргументами (10, 20) аргумент x получит значение 10 , а y — 20 .
Функция не всегда должна получать фиксированное количество аргументов. Когда нам нужна большая гибкость, мы можем передать в нее неограниченное количество аргументов. В этом уроке мы узнаем, как объявлять функции с разным количеством аргументов, и как передавать функции аргументы, которые упакованы в коллекцию.
Переменное количество аргументов
Функция print принимает то количество аргументов, которые мы ей передадим. Она даже работает, когда ее вызывают без аргументов.
Рассмотрим пример функции с неограниченным количеством аргументов:
def f(*args): print(type(args)) print(args) f() # => tuple # => () f(1, 'a', None, False) # => tuple # => (1, 'a', None, False)
Эта функция отличается от функции с позиционными аргументами аргументом *args . Точнее оператором * . Он упаковывает все передаваемые в функцию аргументы от текущей позиции и до конца в переменную как кортеж.
Аргумент с оператором * забирает в себя все переданные значения. Если мы хотим использовать дополнительные аргументы, их нужно указать перед аргументом с оператором * , как показано в примере:
def f(x, *args): print(f'Первый аргумент: x>') for a in args: print(f'Другой аргумент из *args a>!') f('Programing language', 'Python', 'PHP', 'Java') # => Первый аргумент: Programing language # => Другой аргумент из *args Python! # => Другой аргумент из *args PHP! # => Другой аргумент из *args Java! f() # TypeError: f() missing 1 required positional argument: 'x'
Здесь функция принимает несколько аргументов, но как минимум один должен быть передан всегда. Первый аргумент станет значением переменной x , а остальные сохранятся в *args . Так можно делать любое нужное количество обязательных аргументов.
Передача аргументов в форме коллекции
Иногда нужно сначала сформировать набор аргументов, а потом передать их функции. Допустим, прочитать аргументы из файла или получить другим программным способом. Здесь снова пригодится оператор * :
def sum(a, b): return a + b nums = [3, 4] sum(*nums) # 7
Часть аргументов можно подставлять сразу в функцию и даже подставлять несколько коллекций сразу:
def greet(*names): for name in names: print(f'Hello, name>!') greet( 'Bob', *['Mary', 'Clair'], 'Sam', *('Henry', 'John') ) # => Hello, Bob! # => Hello, Mary! # => Hello, Clair! # => Hello, Sam! # => Hello, Henry! # => Hello, John!
В приведенном примере мы передали в функцию greet набор аргументов и коллекций. При помощи оператора * функция greet вызывается с шестью аргументами: ‘Bob’, ‘Mary’, ‘Clair’, ‘Sam’, ‘Henry’ и ‘John’. Результатом этого кода будет шесть приветствий по одному для каждого аргумента. Они будут в том порядке, в котором их передали в функцию.
Выводы
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Обработать неизвестное количество строк в Python
Откуда взялось ограничения 1? for в Python легко справляется с неизвестным количеством строк, например при чтении из файла.
23 фев 2017 в 13:18
Ограничение 1 взялось из задач следующего типа: на ввод подается некое кол-во строк, причем не в файле. Нужно их обработать и что-то сделать. Вот пример такой задачи- pythontutor.ru/lessons/dicts/problems/sales
23 фев 2017 в 19:09
Например так: ideone.com/Zwznnu Понятно, что можно было просто циклом while сделать, но часто проще сначала распарсить входные данные, а потом циклом for по ним пройтись. Цикл for работает с любым итерируемым объектом, не обязательно определённой длины.
23 фев 2017 в 19:24
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Файл в питоне можно итерировать по строкам, например,
for line in sys.stdin: # делаем что угодно со строкой, например print(len(line))
Такое будет работать, только если стандарнтый поток ввода не подключен к терминалу, а например, происходит перенаправление из регулярного файла.
Либо можно читать файл по одной строке.
while True: line = sys.stdin.readline() if line == '': break # обработка print(len(line))
Разумеется, совсем без циклов обойтись не получится.
Чтобы во всех этих случаях остановиться, когда ввод происходит с терминала, надо нажать CTRL — D (в Linux) или CTRL — Z (в Windows).
Отслеживать
33.9k 25 25 золотых знаков 130 130 серебряных знаков 222 222 бронзовых знака
ответ дан 22 фев 2017 в 22:51
8,552 4 4 золотых знака 29 29 серебряных знаков 53 53 бронзовых знака
Цикл while здесь ни к чему: это просто многословный способ первый for-цикл написать (если баг с read-ahead буфером на Питоне 2 не рассматривать).
23 фев 2017 в 14:23
Вводим ограничение, что чтение идет только через input . Eсли данные завершились, бросается исключение ValueError (как в PythonTutor) или EOFError (как в Ideone).
Через while
while True: try: try: line = input() except (ValueError, EOFError): break # здесь можно как-то строку обработать print(line)
Через for
«Упаковываем» цикл while в функцию, и превращаем в итератор (плюс деление каждой строки по пробельным символам):
def inputs(): while True: try: line = input() # Здесь может происходить какая-то предварительная обработка данных: data = line.split() yield data except (ValueError, EOFError): return for name, purchase, count in inputs(): # Окончательная обработка данных print(name, purchase, count)
Часто бывает удобно делать именно вторым вариантом, если первоначальная обработка (парсинг) текста довольно сложна, и нужно отделить её от собственно обработки данных.
Как ввести неопределённое количество строк С++?
Здравствуйте. Сразу оговорюсь, я только начала изучать строки, я не знаю векторов и много еще чего. Нужно ввести неопределенное количество строк. Проблема в том, что я не знаю как это осуществить. Моих знаний явно не хватает для этого. Пожалуйста, помогите.
- Вопрос задан более двух лет назад
- 1361 просмотр
3 комментария
Простой 3 комментария
А что сделать-то надо?
Karapolo @Karapolo Автор вопроса
cicatrix, ввести данные и работать с ними.
Karapolo, как осуществляется приём входных данных? С консоли, из файла, из базы данных, с интернет-ресурса?
Написать надо что? Отдельную функцию или программу целиком?
Есть ли ограничения, чем можно пользоваться, чем нельзя?
Потому как в простом случае, приём строки с консоли осуществляется вот так:
#include std::string str; std::getline(std::cin, str);
Но у того, кто дал тебе это задание, могут быть иные идеи в отношении использования string, например.
Решения вопроса 2
Алексей Уколов @alexey-m-ukolov
Такое условие означает, что вам нужно со строкой работать посимвольно, а не писать её всю в память, потому что памяти может не хватить.
Ответ написан более двух лет назад
Karapolo @Karapolo Автор вопроса
А что мне делать с пробелами, если я буду вводить посимвольно? Как это осуществить? Я пробовала через scanf(«%c», s), но у меня это не получилось. Или через массив? Но даже если так, то нам не известно количество символов, также есть еще пробелы.
Алексей Уколов @alexey-m-ukolov
Что «это»? Что «делать»? Массив — это не посимвольно.

Data Science
смотря на сколько привередливый проф. Может быть реально как сказал Алексей, но
обычно в универе такие ключевые слова как «неопределенное» означает что-то динамическое. Т.е. Вектор.
Для самых отбитых можно сделать функцию буфера, т.е. если ветор имеет более «х» строк, то выкачать это в фаил (но не думаю, что это потребуется).
А алгоритм в принципе простой, надо только перевести в код
Инициализируй переменную статуса меню
Задекларируй Вектор, куда будут попадать все данные
Инициализируй переменные для статистики (если их много, желательно сделай отдельный класс, а на этом месте будет обьект этого класса).
напиши while loop и используй сканнер, который добавляет строки в вектор до тех пор, пока к примеру пользователь не нажмет 0, где 0 будет считаться выходом из программы, т.е. break
тут выбор, или ты сразу после добавления строки делаешь статистику, или после того как пользовательно нажмет кнопку «0» и тогда для всего вектора.
Если же второе, то делаешь опять for loop на вектор и на каждую строку пишешь нужную обработку статистики.
Вывод данных: тут уж проблем с статистикой из класса быть не должно.
Проблему я вижу в другом, «я только начала изучать строки, я не знаю векторов и много еще чего»
Как ты это писать то собираешься? Готовься к малому сну )) А выучить это надо, я думаю с такими заданиями дальше у вас будет по нарастающей. Пропустишь это — потом опустишь вообще руки.
Конкретно с некоторыми позициями тут помогут спокойно. Писать же все. Для этого есть фриланс.
