Написання найпростішого калькулятора в python 3

Розміщення серверів в надійних дата-центрах Європи. Відкрийте хмарний VPS / VDS сервер на швидких SSD за 1 хвилину!

Кращий хостинг:
- захистить дані від несанкціонованого доступу в охоронюваному європейському ЦОДі
- прийме оплату хоч в bitcoin.
- дозволить поставити свій дистрибутив

- захист від DDos-атак
- безкоштовний backup
- Uptime 99,9999%
- ЦОД - TIER III
- провайдер - TIER I

Підтримаємо російською мовою 24/7/365 Працюємо з юрособами і фізособами. Вам прямо зараз потрібно 24 ядра і 72 Gb RAM. Будь ласка!

Наші вигідні тарифи доведуть, що дешевий хостинг ви ще не знали!

Хвилинна справа: виберіть конфігурацію, оплатіть і CMS на VPS готова.
Money Back - 30 днів!

Банківськими картами, електронною валютою, через термінали Qiwi, Webmoney, PayPal, Новоплат і ін.

Задайте питання в службу підтримки 24/7/365

Знайдіть відповіді в нашій базі і познайомтеся з рекомендаціями

Мова програмування Python є відмінним інструментом для обробки чисел і математичних виразів. На основі цієї якості можна створювати корисні програми.

У цьому посібнику вам пропонується корисна вправа: спробуйте написати просту програму командного рядка для виконання обчислень. Отже, в цьому посібнику ви навчитеся створювати найпростіший калькулятор в Python 3.

У керівництві використовуються математичні оператори, змінні, умовні вирази, функції.

вимоги

Для виконання керівництва потрібно встановити Python 3 на локальну машину і розгорнути середу розробки. Всі необхідні інструкції можна знайти тут:

  • Налаштування локальної середовища розробки для Python 3 в CentOS 7
  • Налаштування локальної середовища розробки для Python 3 в Windows 10
  • Налаштування локальної середовища розробки для Python 3 в Mac OS X
  • Налаштування локальної середовища розробки для Python 3 в Ubuntu 16.04

1: Рядок введення

Для початку потрібно написати рядок введення, за допомогою якої користувачі зможуть вводити дані для обчислень в калькуляторі.

Для цього використовуйте вбудовану функцію input (), яка приймає згенерований користувачем введення з клавіатури. В круглих дужках функції input () можна передати рядок. Призначеного для користувача введення потрібно присвоїти змінну.

У даній програмі користувач зможе вводити два числа. Запитуючи введення, потрібно додати пробіл в кінці рядка, щоб відокремити введення користувача від рядка програми.

number_1 = input ( 'Enter your first number:')
number_2 = input ( 'Enter your second number:')

Перш ніж запустити програму, збережіть файл. Наприклад, назвемо програму calculator.py. тепер можна запустити програму у вікні терміналу в середовищі розробки за допомогою команди:

Програма запропонує вам ввести два числа:

Enter your first number: 5
Enter your second number: 7

На даний момент калькулятор приймає будь-які вхідні дані, не обмежуючись числами: слова, символи, пробіли, навіть enter. Це відбувається тому, що функція input () приймає дані як рядки і не знає, що в даному випадку потрібні лише числа.

Щоб програма могла виконувати математичні обчислення, вона не повинна приймати ніяких даних, крім чисел.

Залежно від призначення калькулятора, програма може перетворювати рядки функції input () в цілі числа або в числа з плаваючою крапкою. В даному випадку цілі числа підходять більше. Функцію input () потрібно передати всередині функції int (), щоб перетворити введення в ціле число.

number_1 = int (input ( 'Enter your first number:'))
number_2 = int (input ( 'Enter your second number:'))

Тепер спробуйте ввести два цілих числа:

Enter your first number: 23
Enter your second number: 674

Все працює без помилок. Однак якщо ви введете символи, прогалини або букви, програма поверне помилку:

Enter your first number: hello
Traceback (most recent call last):
File "testing.py", line 1, in
number_1 = int (input ( 'Enter your first number:'))
ValueError: invalid literal for int () with base 10: 'hello'

Отже, ви написали рядок для введення даних в програму.

Примітка. Спробуйте самостійно перетворити вхідні дані в числа з плаваючою крапкою.

2: Додавання операторів

Тепер потрібно додати чотири базових оператора: + (додавання), - (віднімання), * (множення) і / (ділення).

Програму краще розробляти поступово, щоб мати можливість протестувати її на кожному етапі.

Спочатку додайте оператор додавання. Помістіть два числа в print, щоб калькулятор відображав результат.

number_1 = int (input ( 'Enter your first number:'))
number_2 = int (input ( 'Enter your second number:'))
print (number_1 + number_2)

Запустіть програму і спробуйте скласти два числа:

Enter your first number: 8
Enter your second number: 3
11

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

number_1 = int (input ( 'Enter your first number:'))
number_2 = int (input ( 'Enter your second number:'))
print ( '<> + <> = '.format (number_1, number_2))
print (number_1 + number_2)

Знову запустіть програму і спробуйте ввести якісь числа:

Enter your first number: 90
Enter your second number: 717
90 + 717 =
807

Тепер користувач зможе переконатися, що ввів правильні числа.

На даному етапі можна додати інші оператори, використовуючи такий же формат:

number_1 = int (input ( 'Enter your first number:'))
number_2 = int (input ( 'Enter your second number:'))
# Addition
print ( '<> + <> = '.format (number_1, number_2))
print (number_1 + number_2)
# Subtraction
print ( '<> - <> = '.format (number_1, number_2))
print (number_1 - number_2)
# Multiplication
print ( '<> * <> = '.format (number_1, number_2))
print (number_1 * number_2)
# Division
print ( '<> / <> = '.format (number_1, number_2))
print (number_1 / number_2)

Тепер калькулятор може виконувати математичні обчислення за допомогою операторів +, -, * і /. Далі потрібно обмежити кількість операцій, які програма може виконати за один раз.

3: Додавання умовного оператора

Додайте в початок програми calculator.py невеликий опис з переліком доступних операцій. Вибравши один з операторів, користувач повідомить програмі, що саме їй потрібно буде робити.

'' '
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* For multiplication
/ For division
'' '

Примітка. Насправді тут можна використовувати будь-які символи (наприклад, 1 для складання, b для вирахування і так далі).

Передайте рядок всередині функції input () і надайте змінну значенням введення (наприклад, це буде мінлива operation).

operation = input ( '' '
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* For multiplication
/ For division
'' ')
number_1 = int (input ( 'Enter your first number:'))
number_2 = int (input ( 'Enter your second number:'))
print ( '<> + <> = '.format (number_1, number_2))
print (number_1 + number_2)
print ( '<> - <> = '.format (number_1, number_2))
print (number_1 - number_2)
print ( '<> * <> = '.format (number_1, number_2))
print (number_1 * number_2)
print ( '<> / <> = '.format (number_1, number_2))
print (number_1 / number_2)

До цього рядка користувач може ввести будь-який із запропонованих символів, але нічого не відбудеться. Щоб програма працювала, потрібно додати умовний оператор. Оператор if буде відповідати за складання, три оператора elif - за інші операції; оператор else буде повертати помилку, якщо замість запропонованих операторів користувач ввів інший символ.

operation = input ( '' '
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* For multiplication
/ For division
'' ')
number_1 = int (input ( 'Enter your first number:'))
number_2 = int (input ( 'Enter your second number:'))
if operation == '+':
print ( '<> + <> = '.format (number_1, number_2))
print (number_1 + number_2)
elif operation == '-':
print ( '<> - <> = '.format (number_1, number_2))
print (number_1 - number_2)
elif operation == '*':
print ( '<> * <> = '.format (number_1, number_2))
print (number_1 * number_2)
elif operation == '/':
print ( '<> / <> = '.format (number_1, number_2))
print (number_1 / number_2)
else:
print ( 'You have not typed a valid operator, please run the program again.')

Отже, спочатку програма пропонує користувачеві ввести символ операції. Потім вона запитує два числа. Після цього вона відображає користувача введення і результат обчислень. Наприклад, користувач вводить *, потім 58 і 40.

Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* For multiplication
/ For division
*
Please enter the first number: 58
Please enter the second number: 40
58 * 40 =
2320

Якщо ж на перший запит програми користувач введе символ%, він отримає помилку.

На даний момент програма виконує всі необхідні обчислення. Однак щоб виконати іншу операцію, програму доведеться перезапустити.

4: Визначення функцій

Щоб програму не довелося перезапускати після кожного обробленого прикладу, потрібно визначити кілька функцій. Для початку помістимо весь існуючий код в функцію calculate () і додамо в програму ще один шар. Щоб програма запускалася, потрібно додати функцію в кінець файлу.

# Визначення функції
def calculate ():
operation = input ( '' '
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* For multiplication
/ For division
'' ')
number_1 = int (input ( 'Please enter the first number:'))
number_2 = int (input ( 'Please enter the second number:'))
if operation == '+':
print ( '<> + <> = '.format (number_1, number_2))
print (number_1 + number_2)
elif operation == '-':
print ( '<> - <> = '.format (number_1, number_2))
print (number_1 - number_2)
elif operation == '*':
print ( '<> * <> = '.format (number_1, number_2))
print (number_1 * number_2)
elif operation == '/':
print ( '<> / <> = '.format (number_1, number_2))
print (number_1 / number_2)
else:
print ( 'You have not typed a valid operator, please run the program again.')
# Виклик функції calculate () поза функцією
calculate ()

Створіть ще одну функцію, що складається з умовних операторів. Цей блок коду дозволить користувачеві вибрати: продовжити роботу з програмою або завершити її. В даному випадку операторів буде три: один if, один elif і один else для обробки помилок.

Нехай функція називається again (). Додайте її в кінець блоку def calculate ():


# Визначення функції again ()
def again ():
# Введення користувача
calc_again = input ( '' '
Do you want to calculate again?
Please type Y for YES or N for NO.
'' ')
# Якщо користувач вводить Y, програма запускає функцію calculate ()
if calc_again == 'Y':
calculate ()
# Якщо користувач вводить N, програма попрощається і завершить роботу
elif calc_again == 'N':
print ( 'See you later.')
# Якщо користувач вводить інший символ, програма знову запускає функцію again ()
else:
again ()
# Виклик calculate ()
calculate ()

Також можна усунути чутливість до регістру: літери y і n повинні сприйматися так само, як Y і N. Для цього додайте функцію рядка str.upper ():


def again ():
calc_again = input ( '' '
Do you want to calculate again?
Please type Y for YES or N for NO.
'' ')
# Accept 'y' or 'Y' by adding str.upper ()
if calc_again.upper () == 'Y':
calculate ()
# Accept 'n' or 'N' by adding str.upper ()
elif calc_again.upper () == 'N':
print ( 'See you later.')
else:
again ()
.

Тепер потрібно додати функцію again () в кінець функції calculate (), щоб програма запускала код, який запитує користувача, чи хоче він продовжити роботу.

def calculate ():
operation = input ( '' '
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* For multiplication
/ For division
'' ')
number_1 = int (input ( 'Please enter the first number:'))
number_2 = int (input ( 'Please enter the second number:'))
if operation == '+':
print ( '<> + <> = '.format (number_1, number_2))
print (number_1 + number_2)
elif operation == '-':
print ( '<> - <> = '.format (number_1, number_2))
print (number_1 - number_2)
elif operation == '*':
print ( '<> * <> = '.format (number_1, number_2))
print (number_1 * number_2)
elif operation == '/':
print ( '<> / <> = '.format (number_1, number_2))
print (number_1 / number_2)
else:
print ( 'You have not typed a valid operator, please run the program again.')
# Додавання функції again () в calculate ()
again ()
def again ():
calc_again = input ( '' '
Do you want to calculate again?
Please type Y for YES or N for NO.
'' ')
if calc_again.upper () == 'Y':
calculate ()
elif calc_again.upper () == 'N':
print ( 'See you later.')
else:
again ()
calculate ()

Запустіть програму в терміналі за допомогою команди:

Тепер програму не потрібно перезапускати.

5: Додаткові дії

Написана вами програма повністю готова до роботи. Однак є ще багато доповнень, які при бажанні можна внести в код. Наприклад, ви можете написати вітальне повідомлення і додати його в початок коду:

def welcome ():
print ( '' '
Welcome to Calculator
'' ')
.
# Потім потрібно викликати функції
welcome ()
calculate ()

Також можна додати в програму більше функцій для обробки помилок. Наприклад, програма повинна продовжувати роботу навіть якщо користувач вводить слово замість числа. На даний момент це не так: програма видасть користувачеві помилку і припинить роботу.

Крім того, якщо при виборі оператора ділення (/) користувач вибирає знаменник 0, він повинен отримати помилку:

ZeroDivisionError: division by zero

Для цього потрібно написати виключення з допомогою оператора try ... except.

Програма обмежена 4 операторами, але ви можете розширити цей список:


operation = input ( '' '
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* For multiplication
/ For division
** for power
% For modulo
'' ')
.
# Для зведення в ступінь і обробки модуля потрібно додати в код умовні оператори.

Також в програму можна додати оператори циклу.

Існує багато способів для налаштування обробки помилок і поліпшення кожного проекту. При цьому завжди важливо пам'ятати, що не існує єдино правильного способу вирішити ту чи іншу проблему.

висновок

Тепер ви знаєте, як написати найпростіший калькулятор. Після виконання керівництва ви можете самостійно додати нові функції програми.