Как сделать простую программу-калькулятор на Python 3

Вступление

Язык программирования Python - отличный инструмент для работы с числами и оценки математических выражений. Это качество может быть использовано для создания полезных программ.

Это руководство представляет собой учебное упражнение, которое поможет вам создать простую программу-калькулятор для командной строки в Python 3. Хотя мы рассмотрим один из возможных способов создания этой программы, существует множество возможностей улучшить код и создать более надежный калькулятор.

Мы будем использовать math operator, https://www.digitalocean.com / community / tutorials / how-to-use-variable-in-python-3 [переменные], https://www.digitalocean.com/community/tutorials/how-to-write-conditional-statements-in-python- 3-2 [условные операторы], functions, и обрабатывайте пользовательский ввод для создания нашего калькулятора.

Предпосылки

Для этого урока у вас должен быть установлен Python 3 на вашем локальном компьютере и на нем должна быть установлена ​​среда программирования. Если вам нужно либо установить Python, либо настроить среду, вы можете сделать это, следуя https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local- Programming Environment-for-Python-3 [соответствующее руководство для вашей операционной системы].

Шаг 1 - Запрос пользователей на ввод

Калькуляторы работают лучше всего, когда человек предоставляет уравнения для компьютера, чтобы решить. Мы начнем писать нашу программу в тот момент, когда человек вводит цифры, с которыми он хотел бы, чтобы компьютер работал.

Для этого мы будем использовать встроенную в Python функцию + input () +, которая принимает пользовательский ввод с клавиатуры. Внутри скобок функции + input () + мы можем передать string, чтобы предложить пользователю , Мы назначим пользовательский ввод переменной.

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

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

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

OutputEnter your first number:
Enter your second number:

Если вы запустите эту программу несколько раз и измените свой ввод, вы заметите, что при появлении запроса вы можете ввести все, что захотите, включая слова, символы, пробелы или просто клавишу ввода. Это потому, что + input () + принимает данные как strings и не знает, что мы являемся ищу номер.

Мы хотели бы использовать число в этой программе по двум причинам: 1) чтобы программа могла выполнять математические вычисления, и 2) для проверки того, что вводимые пользователем данные представляют собой числовую строку.

В зависимости от наших потребностей в калькуляторе, мы можем преобразовать строку, поступающую из функции + input () +, в целое число или число с плавающей точкой. Для нас целые числа соответствуют нашей цели, поэтому мы обернем функцию + input () + в функции + int () + в https://www.digitalocean.com/community/tutorials/how- to-convert-data-types-in-python-3 [преобразовать] входные данные в данные integer тип.

calculator.py

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

Теперь, если мы введем два целых числа, мы не столкнемся с ошибкой:

OutputEnter your first number:
Enter your second number:

Но если мы введем буквы, символы или любые другие нецелые числа, мы столкнемся со следующей ошибкой:

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

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

Шаг 2 - Добавление операторов

Прежде чем наша программа будет завершена, мы добавим всего 4 matематических операторов: + для сложения, + - + для вычитания, + * + для умножения и + / + для деления.

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

calculator.py

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

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

OutputEnter your first number:
Enter your second number:

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

calculator.py

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


print(number_1 + number_2)

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

OutputEnter your first number:
Enter your second number:
+  =

Использование строковых форматеров предоставляет пользователям больше отзывов.

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

calculator.py

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



# Multiplication



# Division

Мы добавили оставшиеся операторы + - +, + * + и + / + в программу выше. Если мы запустим программу в этот момент, она выполнит все вышеуказанные операции. Однако мы хотим ограничить выполнение программы только одной операцией за раз. Для этого мы будем использовать условные выражения.

Шаг 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 () +. Мы поместим строку в функцию + input () + и передадим значение этого входа в переменную, которую мы назовем + operation +.

calculator.py

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 + будет там, где выполняется добавление, будет 3 оператора else-if или + elif + для каждого из других операторов и оператор + else + будет установлен для обработки ошибки, если человек не вводил символ оператора.

calculator.py

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.')

Чтобы пройти через эту программу, сначала она предлагает пользователю ввести символ операции. Мы скажем, что пользователь вводит + * + для умножения. Затем программа запрашивает 2 числа, и пользователь вводит + 58 + и + 40 +. В этот момент программа показывает выполненное уравнение и произведение.

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

Please enter the first number:
Please enter the second number:
*  =

Из-за того, как мы структурируем программу, если пользователь вводит «+% +» при запросе операции в первом приглашении, он не получит обратной связи для повторной попытки, пока не введет числа. Вы можете рассмотреть другие возможные варианты решения различных ситуаций.

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

Шаг 4 - Определение функций

Чтобы обрабатывать возможность выполнять программу столько раз, сколько хочет пользователь, мы определим некоторые функции. Давайте сначала поместим наш существующий блок кода в функцию. Мы назовем функцию + Calculate () + и добавим дополнительный слой отступа внутри самой функции. Чтобы программа работала, мы также вызовем функцию внизу нашего файла.

calculator.py

# Define our function

   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.')

# Call calculate() outside of the function

Далее, давайте создадим вторую функцию, состоящую из более условных операторов. В этом блоке кода мы хотим дать пользователю выбор относительно того, хотят ли они вычислять снова или нет. Мы можем основывать это на наших условных выражениях калькулятора, но в этом случае у нас будет только один + if +, один + elif + и один + else + для обработки ошибок.

Мы назовем эту функцию + again () + и добавим ее ниже нашего кодового блока + def define (): +.

calculator.py

...
# Define again() function to ask user if they want to use the calculator again


   # Take input from user





   # If user types Y, run the calculate() function



   # If user types N, say good-bye to the user and end the program



   # If user types another key, run the function again



# Call calculate() outside of the function
calculate()

Несмотря на то, что есть некоторая обработка ошибок с оператором else, приведенным выше, мы, вероятно, могли бы немного лучше принять, скажем, + y + и + n + в нижнем регистре в дополнение к + Y + в верхнем регистре и + N +. Для этого добавим функцию string + str.upper () +:

calculator.py

...
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 == 'Y':
       calculate()

   # Accept 'n' or 'N' by adding str.upper()
   elif calc_again == 'N':
       print('See you later.')

   else:
       again()
...

На этом этапе мы должны добавить функцию + again () + в конец функции + Calculate () +, чтобы мы могли вызвать код, который спрашивает пользователя, хотят ли они продолжить.

calculator.py

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.')

   # Add again() function to calculate() function


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()

Теперь вы можете запустить вашу программу с помощью + python calculator.py + в окне терминала, и вы сможете рассчитывать столько раз, сколько захотите.

Шаг 5 - Улучшение кода

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

def welcome():
   print('''
Welcome to Calculator
''')
...
# Don’t forget to call the function
welcome()
calculate()

Есть возможности, чтобы ввести больше обработки ошибок во всей программе. Для начала вы можете убедиться, что программа продолжает работать, даже если пользователь вводит + plankton + при запросе числа. Поскольку программа сейчас работает, если + number_1 + и + number_2 + не являются целыми числами, пользователь получит ошибку, и программа прекратит работу. Кроме того, для случаев, когда пользователь выбирает оператор деления (+ / +) и вводит + 0 + для своего второго числа (+ number_2 +), пользователь получит + ZeroDivisionError: Деление на ноль + ошибка. Для этого вы можете использовать обработку исключений с помощью `+ try …​ кроме + `заявление.

Мы ограничены четырьмя операторами, но вы можете добавить дополнительные операторы, как в:

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


''')
...
# Don’t forget to add more conditional statements to solve for power and modulo

Кроме того, вы можете переписать часть программы с помощью оператора цикла.

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

Заключение

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

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

Затем вы можете создать текстовую игру, такую ​​как крестики-нолики или ножницы.

Related