Python сложение чисел введенных с клавиатуры

2.1. Ввод и вывод данных. Операции с числами, строками. Форматирование

В данном учебном курсе мы будем писать программы без графического пользовательского интерфейса, то есть без кнопок, текстовых полей ввода и т. д. Программы будут принимать на вход данные от пользователя с клавиатуры (а чуть позже мы научимся работать с файловым вводом и выводом), а выводить результат будут на экран. Всё взаимодействие с программой будет происходить в командной строке, также называемой консолью или терминалом.

Во введении к курсу мы узнали, что командная строка в среде разработки Visual Studio Code находится внизу на вкладке «Терминал». Именно в ней мы будем вводить данные с клавиатуры, а программа будет выводить результаты. Как было сказано ранее, мы будем писать компьютерные программы, которые принимают на вход данные, работают с ними и выводят результат на экран.

Вспомним программу из введения:

В этой программе мы вызываем встроенную функцию под названием print() . Как она устроена внутри, нам пока не столь важно. Главное — запомнить, что у неё есть имя, по которому к ней можно обратиться, плюс она принимает данные и обрабатывает их. О том, какими могут быть данные, мы тоже поговорим позже — в нашем примере мы передаём строку «Привет, мир!».

В Python строки заключены в кавычки — можно использовать одинарные, двойные и тройные (рекомендуется их составлять из трёх двойных). Внутри кавычек одного вида можно использовать другой вид кавычек как часть выводимой на экран строки.

  • print(‘Привет, мир!’)
  • print(«Привет, мир!»)
  • print(«»»Привет, мир!»»»)
  • print(«Программа выводит фразу ‘Привет, мир!'»)

Данные в программу могут поступать различными способами. Самый простой и привычный для пользователя — это ввод с клавиатуры. Для этого в Python используется функция input() , которая возвращает в программу введённую пользователем строку. Но данные нужно куда-то сохранить, и в этом нам помогают переменные. Переменным назначаются имена, в них записываются значения, и затем они используются в программе по мере необходимости.

Напишем программу, которая получает от пользователя строку и выводит на экран:

После запуска программы происходит приостановка выполнения и в терминале появляется приглашение для ввода данных:

После ввода данных необходимо нажать клавишу Enter . Программа запишет введённые данные в переменную phrase и продолжит выполнение со следующей строчки. Переменная начинает существовать в программе, когда в неё записывается какое-то значение. В момент записи значения переменной назначается тип данных, определённый в соответствии со значением.

В нашем примере в переменную phrase записывается строка, введённая пользователем. Поэтому переменной phrase назначается встроенный в язык Python тип данных str . Тип данных str используется для хранения строк, а сами строки являются упорядоченной последовательностью символов.

У функции input() можно задать параметр-строку перед вводом значения — и тогда указанный текст будет сопровождать приглашение к вводу данных:

Для именования переменных и правильного оформления кода существует стандарт PEP 8 (Python Enhancement Proposals), который следует соблюдать. Согласно стандарту PEP 8, имена переменных должны содержать маленькие буквы английского алфавита и символ «подчёркивание» для разделения слов в имени. Пример имён переменных по стандарту: value, first_value.

Нельзя использовать следующие однобуквенные имена переменных:

  • I (большая английская i);
  • l (маленькая английская L);
  • O.

Эти однобуквенные имена усложнят читаемость кода, так как могут быть перепутаны между собой или с цифрами. Все стандарты PEP можно посмотреть на этой странице.

Но вернёмся к функции print() . С её помощью можно выводить сразу несколько значений. Для этого их нужно перечислить через запятую. Выведем, например, фразу Добрый день, %имя%. :

В консоли отобразится:

Как видим, результат работы программы не соответствует нашим ожиданиям, так как между словом «Пользователь» и точкой появился пробел. Данный пробел является символом, который по умолчанию ставится между выводимыми значениями. Вместо пробела можно указать любую другую строку, даже пустую. Для этого нужно передать в функцию print() именованный аргумент sep (англ. separator — «разделитель»). Сделаем так, чтобы вместо пробела в качестве разделителя использовалась пустая строка:

В консоли отобразится:

Но в таком случае необходимые пробелы нам придётся ставить самим, а это неудобно. К счастью, в Python существует удобный и мощный инструмент для форматирования строк — f-строки. Чтобы задать f-строку, необходимо поставить букву f перед открывающей кавычкой строки. Далее f-строка записывается как единое целое, с учётом правил её форматирования, и закрывается соответствующей кавычкой:

Внутри f-строк можно обращаться к переменным, используя фигурные скобки, как в примере выше, а также производить операции, выполнять функции и подставлять их результаты в данную строку. И это только малая часть возможностей f-строк. Более подробно про них можно почитать в данном источнике.

Использование f-строк является приоритетным способом форматирования. Наряду с f-строками существует функция format() , которая также предназначена для удобного форматирования (мы рассмотрим её чуть позже). Также форматирование строк может производиться с помощью символа % . Однако данный способ форматирования является устаревшим (здесь можно почитать про него подробнее).

В строках можно применять управляющие символы, начинающиеся с символа «слеш» (). Например:

  • \n — переход на новую строку;
  • \t — табуляция;
  • \r — возврат каретки в начало строки;
  • \b — возврат каретки на один символ.

Кроме того, с помощью слеша можно экранировать символы, то есть делать их частью выводимой строки. Например, для вывода символа \ необходимо его экранировать самим собой:

Подробнее об экранировании можно почитать в этом источнике.

В функции print() кроме параметра sep существует параметр end , который определяет символ в конце строки. Значение по умолчанию для него — переход на новую строку, обозначаемый как \n . Если вывести строки с помощью нескольких использований функции print() , то вывод каждой из них будет осуществлён с новой строки:

Над строками можно производить следующие операции:

  • сложение (конкатенация строк);
  • умножение строки на целое число.

Результатом сложения строк будет новая строка, представляющая собой записанные последовательно складываемые строки (строки как бы склеиваются друг с другом, образуя новую строку).

При умножении строки на целое число n получается новая строка, состоящая из n дублирований исходной строки. Например, выведем 10 символов — подряд:

В одной из следующих глав мы познакомимся с другими возможностями Python по работе со строками. А сейчас перейдём к работе с числами. Для создания целочисленной переменной в программе достаточно назначить ей имя и присвоить целочисленное значение. Например:

По аналогии создаются вещественные числовые переменные, только в качестве разделителя целой и дробной частей используется десятичный разделитель «точка»:

Для преобразования строк в числа и наоборот используются следующие функции:

  • int() — преобразует строку (или вещественное число) в целое число. Дополнительно можно указать, в какой системе счисления было записано исходное число. По умолчанию используется десятичная система. При конвертации вещественного числа в целое отбрасывается дробная часть;
  • float() — преобразует строку (или целое число) в вещественное число;
  • str() — преобразует значения (в общем случае не только числовые) в строки.

Рассмотрим несколько примеров применения этих функций.

В результате выполнения программы получим:

Первый результат — результат сложения (конкатенации) двух строк. Второй — результат сложения целых чисел, которые были преобразованы из строк функцией int() .

Здесь программа выведет в консоли результат 3 . Дробная часть после десятичного разделителя была отброшена при преобразовании в целое число.

Программа выведет: 9.25 .

А чтобы вводить целые или вещественные числа с клавиатуры, можно использовать уже знакомую нам функцию input() в сочетании с функциями int() и float() :

Для работы с числовыми переменными доступны следующие математические операции:

  • сложение — x + y ;
  • вычитание — x — y ;
  • умножение — x * y ;
  • деление — x / y ;
  • возведение в степень x ** y .

Используем все эти операции в следующей программе:

Вывод программы будет таким:

Необходимо учитывать, что если выполняется операция деления или хотя бы один из операндов является вещественным числом, то результат также будет вещественным.

Например, выполнение следующего кода выведет на экран 2.0 :

Для целых чисел дополнительно доступны операции:

  • целочисленное деление — x // y ;
  • остаток от деления — x % y .

Эти операции можно использовать, например, для получения определённых цифр числа. Получим последнюю цифру числа 1234 (то есть остаток от деления на 10):

Для получения предпоследней цифры нужно «отрезать» последнюю цифру целочисленным делением на 10, а затем у нового числа найти последнюю цифру — уже известным нам способом:

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

Источник

Input Python

Как говорилось в предыдущей статье, программа – это, чаще всего, обработчик данных, который требует как ввода, так и вывода этих самых данных. В этом уроке мы поговорим о самом простом способе получить данные от пользователя в Python: считать их из консоли функцией input().

Ввод в Python

В Питоне есть функция input(), предназначенная для считывания данных, введённых пользователем в консоль с клавиатуры.

Когда вызывается input(), поток выполнения программы останавливается до тех пор, пока пользователь не произведет ввод в терминал.

Для завершения ввода пользователь должен нажать «Enter».

После этого функция input() считывает введённые пользователем данные и автоматически преобразует к строковому типу, даже если это цифры:

Преобразование вводимых данных

Если Вам необходимо использовать данные, введённые пользователем не как строковые, Вам придётся самостоятельно преобразовать тип данных. Мы уже рассказывали о преобразовании типов, но давайте освежим знания.

Input() в int

Если Вам нужно получить целое число, используйте функцию int():

Input() в float

Если нужно получить число с плавающей точкой (не целое), примените функцию float().

Input() в list (список)

Используя некоторые хитрости, можно преобразовать данные, возвращаемые функцией input() в список или другую списко-подобную коллекцию. Для этого надо при помощи метода строки split() разбить её на элементы, используя какой-либо разделитель. Пример с пробелом, в качестве разделителя:

input() в dict (словарь)

К сожалению, попытки простого преобразования данных input() в dict приводят лишь к извращениям:

Ввод в несколько переменных

Если необходимо заполнить одним вводом с клавиатуры сразу несколько переменных, воспользуйтесь распаковкой:

  • если введенных значений больше чем переменных, Вы получите ошибку – ValueError: too many values to unpack (expected 3);
  • если введенных значений меньше чем переменных, Вы получите ошибку – ValueError: not enough values to unpack (expected 3, got 2);

Этого можно избежать, если использовать ещё одну хитрость: распаковку слева))

Параметр prompt

Если использовать функцию input() так, как мы это делали в примерах выше, пользователю будет не ясно, что от него требуется, ведь программа просто остановится. Хорошо было бы вывести пояснение:

Обработка исключений ввода

Древняя компьютерная мудрость гласит: «не доверяй пользователю». Дело в том, что пользовательский ввод – это место, через которое информация попадает внутрь программы. Здесь можно провести аналогию со ртом, через который пища попадает в организм. Вы ведь не всё подряд засовываете в рот? Очень надеемся, что так и есть!

Продолжая аналогию, можно сказать, что пища (пользовательский ввод) может быть опасной (вирусы, sql инъекции и прочие атаки) или просто не съедобной (ожидаем от пользователя электронный адрес, а он вводит домашний).

Есть целый ряд профессий, направленных на борьбу с этими угрозами: пинтестеры и различные инженеры по информационной безопасности.

В целом, всегда стоит придерживаться правила: пользовательский ввод должен быть проверен!

Давайте немного повоюем с воображаемым программистом. Вот код, который доверчиво ожидает от пользователя ввода числа от 1 до 100:

Источник

Простой калькулятор на Python

В последние годы цифровой мир всё больше использует облачные системы. Сервисы вроде timeweb.cloud доказали своё удобство и надёжность, мгновенно обрабатывая гигантские объёмы информации. Но сегодня мы вспомним основы современных технологий и расскажем вам, как написать программу-калькулятор своими руками.

Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.

В начале работы над калькулятором вспомним, из чего он состоит и как он работает. Мы будем писать аналог простого настольного калькулятора, который есть у каждого школьника. Прочитав эту статью и выполнив все задания, вы получите готовый код на питоне простейшего калькулятора.

У настольного калькулятора есть:

  • Кнопки с цифрами
  • Кнопки с математическими операциями
  • Дисплей
  • Микросхемки внутри

В функции настольного калькулятора входит:

  • Сложение
  • Вычитание
  • Деление
  • Умножение
  • Сброс операции
  • Сохранение результата
  • Вычисление процента
  • Взятие корня числа

Для понимания принципа написания калькулятора возьмем из этого списка минимальный набор функций:

  • Ввод чисел
  • Вывод результата
  • Сложение
  • Вычитание
  • Деление
  • Умножение

Код можно писать прямо в онлайн-редакторе.

Примеры кода математических операций

Математические операции, которые будем использовать:

Вывод значения

Чтобы видеть результат, его нужно вывести на экран. Для этого существует функция print(), которая выводит аргументы в скобках в консоль.

Эта функция будет аналогом дисплея нашего калькулятора.

Сохранение результата в переменную

Чтобы не производить вычисления внутри функции print(), будем хранить их в переменной.

Далее мы сможем вывести в консоль значение переменной.

Чтение строк

С дисплеем разобрались, теперь используем Python 3 для создания ввода с клавиатуры . У нас есть кнопки с цифрами на клавиатуре, чтобы передать их программе, существует функция input(). При вызове она считывает любые символы с клавиатуры до тех пор, пока не будет нажата клавиша Enter. После этого она возвращает результат в виде строки из введённых символов. Давайте посмотрим, как это работает:

Выведем результат на экран.

Если передать внутрь функции input() текст, то он выводится на экран перед тем, как начнётся считывание строки.

Объединение и форматирование строк

Чтобы вывод данных стал более дружелюбным, мы можем добавить пояснения к ним. Для этого используем объединение (конкатенацию) строк.

Ещё один способ объединения текста с данными — использование форматированных строк. Для этого перед кавычками необходимо поставить символ f , а данные записывать прямо внутри строки в фигурных скобках. Такой функционал появился с версии Python 3.6.0.

Перевод строк в число

Теперь, когда мы умеем производить математические операции, считывать данные с клавиатуры и красиво выводить результат в консоль, давайте наконец-то напишем первую версию калькулятора! Для простоты пусть он пока будет только складывать числа, но это уже будет готовый пример кода программы на Питон .

Что-то пошло не так. Числа не сложились, а объединились как текст. Дело в том, что input() в Python возвращает ввод строки с клавиатуры , даже если вы вводили только числа. Такое поведение более явное, что соответствует философии Python: «Явное лучше, чем неявное». Для того чтобы исправить возникшую ошибку, используем функцию перевода строки в число: int(). Посмотрим на примере, как работает num int input:

Отредактируем нашу программу.

Обработка некорректных данных

Но что если пользователь введёт не числа, а буквы или другие символы? При попытке перевести такую строку в число Python выдаст ошибку и остановит выполнение программы.

Такие ошибки можно оперативно определять и менять стандартное поведение при их возникновении, например предлагать пользователю ввести число заново. Но это отдельная тема для разговора, поэтому в контексте этой статьи условимся, что пользователь всегда вводит корректные данные.

Создание функций

Итак, у нас есть практически все компоненты для того, чтобы написать полноценный калькулятор. Давайте расширим функционал текущей версии до выполнения всех математических операций, которые мы запланировали:

Чтобы улучшить читаемость кода, разделим эти операции на отдельные функции. Смотрите, как это делается на примере суммы.

Определяем функцию с помощью ключевого слова def , пишем её название и в скобках указываем, какие параметры она принимает. Далее в теле функции пишем то, что она должна выполнять и возвращаем результат с помощью ключевого слова return .

Обратите внимание, что тело функции записывается с отступами строки — таковы правила создания функции. В противном случае будет ошибка.

Результат работы функции можно также сохранить в переменную для дальнейшего использования.

Аналогичным образом создадим остальные функции вычисления.

Условные операторы

Функции операций готовы. Осталось написать простой код на питоне , который предоставит пользователю возможность выбора этих операций. Будем использовать уже знакомый нам ввод с клавиатуры и условные операторы. Условные операторы работают очень просто. Их название говорит само за себя.

На месте двоек могут быть переменные, функции, возвращающие значения, строки и даже математические операции. Посмотрим, как это выглядит в коде на примере проверки пароля. Предположим, что верный пароль: qwerty.

Обратите внимание, что блоки кода также пишутся с отступами, как и в функциях. Двоеточие также обязательно.

Сразу же применим полученные знания к нашему калькулятору. Будем спрашивать у пользователя, какую операцию он хочет совершить, и, в зависимости от ввода, вызывать соответствующую функцию вычисления. Для начала просто выведем текст выбранной операции или сообщение, что такой операции не существует. Следующим шагом заменим текст на вызов операции и объединим его с уже существующей логикой калькулятора.

Собираем всё в единое целое

Поместим всю логику вычислений внутрь функции, чтобы мы могли удобно обращаться к ней в коде скрипта.

Также добавим функцию для запроса операции.

Теперь оборачиваем все этапы взаимодействия с калькулятором в условный корпус функции calculate .

Работает! Поздравляем, только что вы написали свой калькулятор.

Расширение функционала и улучшение кода

Добавление операций

Благодаря тому, что функции вычисления вынесены в отдельные модули calculate python , мы можем с лёгкостью расширять функционал калькулятора.

Давайте добавим операцию возведения в степень.

Добавляем операцию в функцию вычисления.

Также добавим пояснения в функцию запроса действия.

Проверяем, запустив функцию run_calculator().

Тестирование и обработка ошибок

Сейчас, если мы введём неизвестную операцию, калькулятор выдаст сообщение, что такой операции нет, и оставит всё, как есть. Более того, он выведет сообщения о полученном результате, которого по определению быть не должно. Давайте посмотрим:

Ничего страшного не случилось, но и пользы никакой. Такой процесс, когда мы пробуем ввести в программу некорректные данные и наблюдать, как она реагирует, называется тестированием. Это отдельная профессия, но, так или иначе, элементарные тесты должен уметь делать любой программист-профессионал.

Циклы

Давайте изменим поведение программы и позволим пользователю повторно выбрать требуемую операцию.

Для этого поместим код с запросом операции в цикл while . Принцип его во многом схож с условными операторами. Он проверяет условие на истинность и, если оно истинно, выполняет блок кода. После выполнения цикл повторяется — проверка условия и выполнение тела цикла. Таким образом, чтобы цикл завершился, нам нужно изменить проверяемое условие на ложное. Выход из цикла — это очень важный момент. Если не продумать логику выхода из цикла, он может продолжаться бесконечно, что не всегда желательно.

Простой пример. Будем выводить в консоль всё, что введёт пользователь, до тех пор, пока не будет введена пустая строка.

​ Теперь применим это к калькулятору.

Для этого изменим функцию запроса операции ask_operation

Вычисления не производятся до тех пор, пока не будет введена корректная операция. Тест пройден.

Заключение

Сегодня легко найти калькулятор на любой вкус: встроенные в различные приложения, сайты с калькуляторами , обычные физические калькуляторы, разнообразные инженерные модификации, включая такие интересные калькуляторы, как python ipcalc , позволяющий выполнять расчёты IP-подсети. Но что может быть лучше, чем вещь, сделанная и модернизированная своими руками?

Источник

Adblock
detector