Как ввести массив с клавиатуры в python
Обновлено: 21.11.2024
Циклы while действительно полезны, поскольку они позволяют вашей программе работать до тех пор, пока пользователь не решит выйти из нее. Они создают бесконечный цикл, который выполняется до тех пор, пока пользователь не сделает что-то, чтобы завершить цикл. В этом разделе также представлен первый способ получения информации от пользователей вашей программы.
Цикл while проверяет начальное условие. Если это условие истинно, цикл начинает выполняться. Каждый раз, когда цикл завершается, условие пересчитывается. Пока условие остается истинным, цикл продолжает выполняться. Как только условие становится ложным, выполнение цикла прекращается.
Общий синтаксис¶
- Каждому циклу while требуется начальное условие, которое начинается с истинности.
- Инструкция while включает условие для проверки.
- Весь код в цикле будет выполняться до тех пор, пока условие остается истинным.
- Как только что-то в цикле изменяет условие так, что тест больше не проходит, выполнение цикла прекращается.
- В этот момент будет выполняться любой код, определенный после цикла.
Пример¶
Вот простой пример, показывающий, как игра будет оставаться активной, пока у игрока достаточно энергии.
Упражнения¶
Увеличение силы¶
- Создайте переменную с именем force и установите для нее начальное значение 5.
- Распечатать сообщение о силе игрока.
- Настройте цикл while, который выполняется до тех пор, пока сила игрока не увеличится до значения, например 10.
- Внутри цикла while выведите сообщение, сообщающее о текущей силе игрока.
- Внутри цикла while напишите оператор, увеличивающий силу игрока.
- Вне цикла while вывести сообщение о том, что игрок стал слишком сильным и перешел на новый уровень игры.
- Дополнительный бонус: поэкспериментируйте с различными уровнями отсечки для значения силы и поэкспериментируйте с различными способами увеличения значения силы в цикле while.
Почти все интересные программы в какой-то момент принимают ввод от пользователя. Вы можете начать принимать пользовательский ввод в своих программах, используя функцию input(). Функция ввода отображает пользователю сообщение, описывающее тип ввода, который вы ищете, а затем ожидает, пока пользователь введет значение. Когда пользователь нажимает Enter, значение передается вашей переменной.
Общий синтаксис¶
Общий случай принятия ввода выглядит примерно так:
Вам нужна переменная, которая будет хранить любое значение, которое вводит пользователь, и вам нужно сообщение, которое будет отображаться для пользователя.
Пример¶
В следующем примере у нас есть список имен. Мы запрашиваем у пользователя имя и добавляем его в наш список имен.
Прием ввода в Python 2.7¶
В Python 3 вы всегда используете input() . В Python 2.7 вам нужно использовать raw_input() :
Функция input() будет работать в Python 2.7, но ее использование не рекомендуется. Когда вы используете функцию input() в Python 2.7, Python выполняет введенный код. Это нормально в контролируемых ситуациях, но в целом это не очень безопасная практика.
Если вы используете Python 3, вы должны использовать input() . Если вы используете Python 2.7, используйте raw_input() .
Упражнения¶
Настройки игры¶
- Составьте список из 3–4 игр, в которые вам нравится играть.
- Распечатайте заявление, в котором пользователю сообщается, какие игры вам нравятся.
- Попросите пользователя назвать вам игру, которая ему нравится, и сохраните ее в переменной, например new_game .
- Добавьте игру пользователя в свой список.
- Распечатайте новое заявление, в котором перечислены все игры, в которые нам нравится играть (мы означают вас и вашего пользователя).
Большинство программ, которые мы используем каждый день, работают до тех пор, пока мы не скажем им выйти, и в фоновом режиме это часто делается с помощью цикла while. Вот пример того, как разрешить пользователю вводить произвольное количество имен.
Это сработало, за исключением того, что в нашем списке появилось имя «бросить». Мы можем использовать простой тест if, чтобы устранить эту ошибку:
Это очень круто! Теперь у нас есть способ принимать данные от пользователей во время работы наших программ, и у нас есть способ позволить нашим программам работать до тех пор, пока наши пользователи не закончат работу.
Упражнения¶
Многие игры¶
- Измените Настройки игр, чтобы ваш пользователь мог добавлять столько игр, сколько ему нужно.
Теперь у вас за плечами достаточно Python, чтобы предлагать пользователям набор вариантов, а затем реагировать на эти варианты до тех пор, пока они не решат отказаться. Давайте рассмотрим простой пример, а затем проанализируем код:
Наши программы теперь достаточно богаты, чтобы мы могли делать с ними много разных вещей. Давайте очистим это одним действительно полезным способом. Здесь есть три основных варианта, поэтому давайте определим функцию для каждого из них.Таким образом, наш код меню остается очень простым, даже когда мы добавляем более сложный код к действиям, связанным с ездой на велосипеде, пробежкой или восхождением на гору.
Это гораздо более чистый код, и он дает нам возможность отделить детали выполнения действия от процесса выбора этого действия.
В разделе о списках вы видели, что мы можем выталкивать () элементы из списка. Вы можете использовать список while для извлечения элементов по одному из одного списка и работать с ними любым удобным для вас способом. Давайте рассмотрим пример, в котором мы обрабатываем список неподтвержденных пользователей.
Это работает, но давайте сделаем одно небольшое улучшение. Текущая программа всегда работает с последним добавленным пользователем. Если пользователи присоединяются быстрее, чем мы можем их подтвердить, мы оставим некоторых пользователей позади. Если мы хотим работать с моделью "первым пришел, первым обслужен" или моделью "первым пришел - первым обслужен", мы можем каждый раз извлекать первый элемент из списка.
Это немного приятнее, потому что мы обязательно доберемся до всех, даже когда наша программа работает под большой нагрузкой. Мы также сохраняем порядок людей, когда они присоединяются к нашему проекту. Обратите внимание, что все это произошло путем добавления одного символа в нашу программу!
Иногда нам нужно, чтобы цикл while выполнялся до тех пор, пока не будет завершено определенное действие, например очистка списка. Иногда нам нужно, чтобы цикл выполнялся в течение неизвестного периода времени, например, когда мы позволяем пользователям вводить столько данных, сколько они хотят. Однако то, что нам редко нужно, — это настоящий «неуправляемый» бесконечный цикл.
Взгляните на следующий пример. Можете ли вы понять, почему этот цикл никогда не остановится?
Я подделал этот вывод, потому что, если бы я его запустил, вывод заполнил бы браузер. Вы можете попробовать запустить его на своем компьютере, если знаете, как прерывать запущенные процессы:
- В большинстве систем сочетание клавиш Ctrl-C прерывает текущую программу.
- Если вы используете Geany, ваши выходные данные отображаются во всплывающем окне терминала. Вы можете либо нажать Ctrl-C, либо использовать указатель мыши, чтобы закрыть окно терминала.
Цикл работает вечно, потому что условия теста не могут быть нарушены. Программист, вероятно, хотел добавить строку, которая увеличивает значение current_number на 1 каждый раз в цикле:
В какой-то момент вы обязательно заставите некоторые циклы выполняться бесконечно. Когда вы это сделаете, просто прервите цикл и выясните логическую ошибку, которую вы сделали.
Бесконечные циклы не будут реальной проблемой, пока у вас не появятся пользователи, запускающие ваши программы на своих компьютерах. Тогда вам не понадобятся бесконечные циклы, потому что вашим пользователям придется закрыть вашу программу, и они сочтут ее ошибочной и ненадежной. Научитесь обнаруживать бесконечные циклы и следите за тем, чтобы они не появлялись в ваших отточенных программах позже.
Вот еще один пример случайного бесконечного цикла:
В этом примере мы случайно начали обратный отсчет. Значение current_number всегда будет меньше 5, поэтому цикл будет выполняться вечно.
Упражнения¶
Восхищение бесконечностью¶
- Используйте один из примеров неудачного цикла while, чтобы создать бесконечный цикл.
- Прерывание вывода.
- Удивитесь тому факту, что если бы вы не прервали свой вывод, ваш компьютер продолжал бы делать то, что вы ему сказали, до тех пор, пока у него не закончилось бы питание или память, или пока вселенная вокруг него не остыла бы.
Сложение Гаусса¶
Вдохновением для этого задания послужила история о математике Карле Фредерихе Гауссе. Как гласит история, когда молодой Гаусс учился в начальной школе, его учитель однажды разозлился на его класс.
"Я займу вас на некоторое время", - строго сказал учитель группе. "Вы должны складывать числа от 1 до 100 и не говорить ни слова, пока не закончите".
Учитель ожидал хорошего периода тишины, но через мгновение наш будущий математик поднял руку с ответом. "Это 5050!" Гаусс понял, что если перечислить все числа от 1 до 100, то всегда можно сопоставить первое и последнее числа в списке и получить общий ответ:
Гаусс понял, что в диапазоне от 1 до 100 ровно 50 пар чисел, поэтому быстро вычислил: 50 * 101 = 5050.
Чтение пользовательского ввода
Получение пользовательского ввода является жизненно важной частью любого приложения, поскольку оно делает приложение более интерактивным и удобным для пользователя. Кроме того, приложения реального мира выполняют различные действия в зависимости от ввода пользователя.
Python предоставляет встроенную функцию input(), которая используется для чтения введенных пользователем значений с клавиатуры.
Этот метод принимает в качестве аргумента строку, представляющую сообщение, которое будет отображаться пользователю при запросе на ввод некоторых значений.
Функция input() возвращает значение, считанное с клавиатуры, всегда в строковом формате. Это означает, что если вы ожидаете в своей программе что-то отличное от строки, вам нужно вручную преобразовать ее в этот тип. Пример,
Вывод будет таким, как показано ниже.Зеленый текст — это данные, введенные пользователем.
Введите свое имя
demouser
Здравствуйте !! демоузер
Обратите внимание, что функция input() блокирует выполнение программы до тех пор, пока пользователь не введет некоторые значения и не нажмет клавишу ввода. До тех пор программа ожидает ввода данных пользователем.
Преобразование типов
Предположим, вы хотите принять два числа от пользователя, добавить их и показать пользователю их сумму. Если вы знакомы с методом ввода, вы должны написать код как
Когда приведенный выше код выполняется, он ведет себя так, как показано ниже
Введите первое число
20
Введите второе число
23
Сумма 2023
Обратите внимание на вывод: должно было быть 43, но вместо этого вышло 2023, что было неожиданно. Какова причина?
Причина этого вывода в том, что функция input() возвращает значения в строковом формате, как упоминалось ранее. Таким образом, при выполнении сложения он фактически объединял строки как «20» + «23», что приводит к «2023».
Поэтому, чтобы ваша программа работала правильно, вы должны преобразовать возвращаемое значение функции input() в соответствии с вашими требованиями.
Возвращаемое значение input() может быть преобразовано в int, float с помощью методов int и float соответственно. Оба эти метода принимают значение в качестве аргумента и возвращают соответствующее представление. Пример,
Помните, что значение обоих этих методов должно быть конвертируемым в int или float, другими словами, оно должно быть числом. Попытка передать недопустимое значение приведет к ошибке. Пример,
Теперь исправленная версия программы для сложения двух чисел будет выглядеть так
Также можно читать ввод и преобразовывать его в той же строке, что и
Возвращаемое значение функции input() передается в качестве аргумента методу int, а возвращаемое значение присваивается переменной.
Это называется цепочкой методов, когда выходные данные одного метода становятся входными данными другого. Цепочка методов работает от самого внутреннего метода к внешнему методу.
Преобразование в строку
Точно так же, как строку можно преобразовать в целое число или число с плавающей запятой, существует способ сделать обратное, то есть преобразовать целое число или число с плавающей запятой в строку с помощью функции str().
Этот метод принимает значение в качестве аргумента и возвращает то же значение, преобразованное в строку.
Пример использования приведен ниже
С этой темы мы начинаем нашу серию практических руководств по Python. Каждый учебник описывает определенную тему с примерами. Постановка задачи в конце каждого руководства позволит оценить ваше понимание.
Введение
Как и все языки высокого уровня, Python легко читается, его написание занимает меньше времени, и он является переносимым. Этот универсальный язык программирования имеет две версии: Python 2 и Python 3. Wiki говорит: Python 2.x — это наследие, Python 3.x — это настоящее и будущее языка. То есть Python 2 больше не находится в разработке, и все новые функции будут добавлены в Python 3. Обратите внимание, что, учитывая это, примеры кода в этом руководстве относятся к Python 3. Где бы ни отображался код Python 2.x, он будет выделен.
Выполнение
Python выполняет код сверху вниз, если он написан с правильным синтаксисом. Чтобы выполнить код из наших руководств по Python, вам необходимо установить Python на свой компьютер в качестве предварительного условия. Небольшое описание того, как установить Python и запустить интерпретатор, приведено здесь. После запуска интерпретатора вы можете начать вводить команды, чтобы получить результат.
Ввод с помощью функции input()
Функция определяется как блок организованного многократно используемого кода, используемого для выполнения одного связанного действия. Python имеет множество встроенных функций; вы также можете создать свой собственный. В Python есть функция ввода, которая позволяет запрашивать у пользователя ввод текста. Вы вызываете эту функцию, чтобы приказать программе остановиться и подождать, пока пользователь не введет данные. В Python 2 у вас есть встроенная функция raw_input(), тогда как в Python 3 у вас есть input(). Программа возобновится, как только пользователь нажмет клавишу ENTER или RETURN. Посмотрите на этот пример, чтобы получить ввод с клавиатуры с помощью Python 2 в интерактивном режиме. Ваш вывод отображается в кавычках, как только вы нажмете клавишу ENTER.
В Python 3.x необходимо использовать input().
Вы всегда можете указать пользователю, что вводить, напечатав подсказку. Между input в Python 3 и raw_input в Python 2 нет никакой разницы, за исключением ключевых слов.
Вывод с помощью функции print()
Чтобы вывести данные на экран, используйте функцию print(). Вы можете написать print(argument), и это напечатает аргумент в следующей строке, когда вы нажмете клавишу ENTER.
Определения, которые следует запомнить. Аргумент — это значение, которое вы передаете функции при ее вызове. Значение представляет собой букву или число. Переменная — это имя, которое ссылается на значение. Начинается с буквы. Оператор присваивания создает новые переменные и присваивает им значения.
Этот синтаксис действителен как в Python 3.x, так и в Python 2.x.Например, если вашими данными является «Гвидо», вы можете поместить «Гидо» в круглые скобки ( ) после печати .
Подробнее об использовании ввода
Чтобы зафиксировать ввод в вашей программе, вам понадобится переменная. Переменная — это контейнер для хранения данных. (Вы узнаете больше о переменных в следующем уроке.) Вы можете взять ввод и присвоить его переменной. Это делается с помощью оператора = перед ключевым словом input, а затем помещая имя переменной перед оператором =. Например, когда вы вводите предложение «общий ввод» в качестве ввода, оно присваивается переменной, скажем, my_var . Затем вы можете распечатать значение, хранящееся в my_var . Давайте разберемся в этом на следующем примере:
Дайте полезную подсказку во время подсказки
Часто рекомендуется указать пользователю, что вводить. Вы можете сделать это, поместив подсказку в кавычки внутри входных скобок. Подсказка появится в следующей строке и будет ждать ввода пользователя. Затем вы можете ввести ввод, и когда вы нажмете клавишу ENTER, он зафиксирует ввод. В этом примере подсказка «назови мне красивое число». Это печатается в следующей строке при запросе ввода. Если вы наберете 6, это будет присвоено переменной beautiful_number, которую мы сможем распечатать позже.
Подробнее об использовании печати
Допустим, вы хотите напечатать определенную строку (последовательность символов, таких как буквы, знаки препинания, цифры и буквы) N раз. Оператор (звездочка) * выполняет повторение строк. Вы можете напечатать «5» шесть раз. В круглых скобках введите «5», затем * и количество раз, которое вы хотите повторить «5».
Вы можете разделить вывод, используя разделитель-запятую. По умолчанию это добавляет пробел между элементами вывода. Например, последовательность чисел 5,6,7, разделенных запятой, печатается с пробелом между одним числом и следующим.
Чтобы изменить вывод на желаемый, используйте аргументы ключевого слова sep и end для печати ( ). При разделении вывода разделителем-запятой вы также можете определить формат разделения с помощью ключевого слова sep.
По умолчанию печать переходит на новую строку в конце. Вы можете изменить это, используя ключевое слово end, как показано в примере ниже.
Например, вы можете напечатать буквы в слове "питон", и все буквы появятся в новой строке.
Вы можете изменить эту реализацию по умолчанию. Вы можете использовать двоеточие : между буквами вместо новой строки.
Печать результата вычисления
Скажем, вы можете присвоить число 7 переменной совокупности, и если вы напишете логическую совокупность * 7 в круглых скобках print , она просто произведет вычисления и напечатает результат.
Получите пользовательский ввод с помощью Python, используя функцию input(). Пользователь может вводить данные с клавиатуры в консоли. В этой статье вы узнаете, как получить ввод с клавиатуры.
В старых версиях Python использовалась устаревшая функция raw_input().
- Узнайте, как принимать данные от пользователя и системы в Python.
- Принимать любой тип ввода с клавиатуры от пользователя (целое число, число с плавающей запятой и строку)
- Узнайте более интересное форматирование вывода.
Синтаксис функции input()
Синтаксис функции input():
В качестве параметра принимает строку, которая печатается в терминале.
Это необязательный параметр, иногда называемый подсказкой.
Параметр представляет собой текст, выводимый на экран. Если мы говорим о тексте, мы говорим строка.
Вы можете распечатать информацию для пользователя, например, какое значение он должен ввести.
Функция input():
- Используйте функцию input(), чтобы получить пользовательский ввод Python с клавиатуры
- Нажмите клавишу ввода после ввода значения.
- Программа ожидает ввода данных пользователем неопределенно долго, тайм-аута нет.
- Функция ввода возвращает строку, которую можно сохранить в переменной
- Завершить с помощью Ctrl-D (Unix) или Ctrl-Z+Return (Windows)
Получение пользовательского ввода в Python
Вот простой пример, который получает пользовательский ввод и печатает его в терминале.
Функция input() получает пользовательский ввод (клавиатура) и сохраняет его в имени переменной.
Здесь имя является переменной. Функция print() выводит его на экран.
Пользователь должен нажать клавишу ввода в командной строке. Затем введенная строка отправляется в ваше приложение.
Итак, чтобы получить текстовое значение, вы можете использовать функцию input(), которая принимает в качестве входных данных строку для печати.
Примечание: не забудьте присвоить ввод переменной, var = input() .
Вы можете использовать необычные выходные данные с именами форматированные строки или f-строки.
Для этого поставьте f перед строкой и используйте фигурные скобки для вывода вашей переменной:
- Функция input() возвращает строку. Это можно сохранить в переменной (имя)
- Затем переменная отображается на экране с помощью функции print().
- Используя форматированные строки (буква f впереди), вы можете смешивать переменные с текстом.
Теперь вы можете вводить данные с клавиатуры, они будут сохранены в имени переменной.
Тип возвращаемого значения
Любое значение, которое вы вводите в input(), сохраняется как string str .
Вы можете подтвердить это, вызвав type()
См. приведенный ниже пример в оболочке Python:
Числа не имеют типа str . Поэтому их необходимо явно преобразовать в числовой тип, например int или float. Вы также можете проверить тип числовых переменных:
Как получить целое число в качестве ввода пользователя?
Если вы вызываете функцию input(), она возвращает обычный текст (строку). Поэтому, если вы хотите использовать целые числа, вам нужно преобразовать строку в целое число.
Чтобы получить целое число (целое число), вы можете сделать следующее:
Получить целочисленный пользовательский ввод в одной строке:
Вы можете получить несколько переменных от пользователя и использовать их в своей программе.
Приведенная ниже программа получает переменную x и переменную y, а затем суммирует и выводит их.
Учтите, что если пользователь на самом деле не вводит целое число, этот код вызовет исключение.
Поэтому обязательно введите число. Если вы хотите предотвратить исключения, см. раздел ниже Обработка исключений ввода.
Читать ввод как число с плавающей запятой
Чтобы получить число (нецелое), например число с плавающей запятой, вы можете вызвать метод float() для преобразования строки.
Плавающая (с плавающей запятой) – это число, например 1,5 , 3,123 , 1,75 , 1,01 и т. д.
Ввод должен быть с плавающей запятой, любой другой ввод вызовет исключение. См. раздел Обработка исключений ввода.
Ввод данных пользователем Python и пример ошибки EOFError
Программа может иметь ошибку EOFError. Это исключение возникает, если функция input() не считывала никаких данных.
Это будет вызвано не простой клавишей ввода, а прерыванием программы с помощью Ctrl+D .
Если у вас есть такая программа:
Вы можете прервать программу, нажав Ctrl+D (EOF). Это вызывает ошибку EOFError и завершает работу скрипта.
Пример выбора пользователем Python
Вы можете создать систему ввода с множественным выбором.
Сначала получите ввод с клавиатуры, вызвав функцию input().
Затем вы можете оценить выбор, используя структуру if-elif-else.
Примечание. Символ == проверяет равенство. Python чувствителен к регистру.
Важно использовать 4 пробела с каждым отступом, а не табуляцию и не разное количество пробелов.
Обработка исключений ввода
Если пользователь вводит неверный ввод или недопустимый ввод, Python может создать исключение. Чтобы справиться с этим, вы можете использовать код ниже:
raw_input() — старые версии
В Python 3 и более поздних версиях вы можете использовать функцию input().
В более ранних версиях Python использовалась функция raw_input().
Разницы между этими функциями нет, только название версии. Хотя это та же функциональность, но вы должны использовать функцию input().
Функция raw_input() объявлена устаревшей и удалена из Python 3.
Если вы все еще используете версию Python 2.x, обновите ее сейчас.
Заключение
Вы можете принимать пользовательский ввод с помощью функции input(). Это ожидает ввода с клавиатуры на неопределенный срок. Если вы добавите параметр, он напечатает этот текст перед вводом пользователем.
Вы также увидели, как обрабатывать неверный ввод, и узнали о разнице между Python 2 и Python 3 (и новее).
Читайте также: