Как написать калькулятор на python
Перейти к содержимому

Как написать калькулятор на python

  • автор:

Программа «Простейший калькулятор»

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

Решение задачи на языке программирования Python

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

Если пользователь ввел знак, который не является ни знаком арифметической операции, ни символом-«прерывателем» работы программы, то вывести сообщение о некорректном вводе.

Если был введен один из четырех знаков операции, запросить ввод двух чисел.

В зависимости от знака операции выполнить соответствующее арифметическое действие.

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

print('0 в качестве знака операции' '\nзавершит работу программы\n') while True: s = input('Знак (+, -, *, /): ') if s == '0': break if s in ('+', '-', '*', '/'): a = float(input('a = ')) b = float(input('b = ')) if s == '+': print('%.2f' % (a + b)) elif s == '-': print('%.2f' % (a - b)) elif s == '*': print('%.2f' % (a * b)) elif s == '/': if b != 0: print('%.2f' % (a / b)) else: print('Деление на ноль!') else: print('Неверный знак операции!') 

Пример выполнения программы:

0 в качестве знака операции завершит работу программы Знак (+, -, *, /): / a = -9.34 b = 3.215 -2.91 Знак (+, -, *, /): & Неверный знак операции! Знак (+, -, *, /): - a = 4005 b = 1358 2647.00 Знак (+, -, *, /): 0

Вариант решение задачи с помощью оператора match (появился в Python 3.10):

print('0 в качестве знака - выход из программы\n') while True: s = input('Знак (+, -, *, /): ') if s == '0': break if s in ('+', '-', '*', '/'): a = float(input('a = ')) b = float(input('b = ')) match s: case '+': print('%.2f' % (a + b)) case '-': print('%.2f' % (a - b)) case '*': print('%.2f' % (a * b)) case '/': if b != 0: print('%.2f' % (a / b)) else: print('Деление на ноль!') else: print('Неверный знак операции!') 

X Скрыть Наверх

Решение задач на Python

Калькулятор на python

Здравствуйте, в предыдущей статье я показывал как сделать игру на python, а сейчас мы посмотри как сделать простой калькулятор на python tkinter.

Создаём окно 485 на 550. Размеры не важны, мне понравились такие. Так же указываем, что окно не будет изменяться.

from tkinter import * class Main(Frame): def __init__(self, root): super(Main, self).__init__(root) self.build() def build(self): pass def logicalc(self, operation): pass def update(): pass if __name__ == '__main__': root = Tk() root["bg"] = "#000" root.geometry("485x550+200+200") root.title("Калькулятор") root.resizable(False, False) app = Main(root) app.pack() root.mainloop() 

Отлично, идём дальше.

Делаем кнопочки

В методе build создаём такой список:

btns = [ "C", "DEL", "*", "=", "1", "2", "3", "/", "4", "5", "6", "+", "7", "8", "9", "-", "+/-", "0", "%", "X^2" ] 

Он отвечает за все кнопки, отображающиеся у нас в окне.

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

x = 10 y = 140 for bt in btns: com = lambda x=bt: self.logicalc(x) Button(text=bt, bg="#FFF", font=("Times New Roman", 15), command=com).place(x=x, y=y, width=115, height=79) x += 117 if x > 400: x = 10 y += 81 

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

self.formula = "0" self.lbl = Label(text=self.formula, font=("Times New Roman", 21, "bold"), bg="#000", foreground="#FFF") self.lbl.place(x=11, y=50) 

Пишем логику

def logicalc(self, operation): if operation == "C": self.formula = "" elif operation == "DEL": self.formula = self.formula[0:-1] elif operation == "X^2": self.formula = str((eval(self.formula))**2) elif operation == "=": self.formula = str(eval(self.formula)) else: if self.formula == "0": self.formula = "" self.formula += operation self.update() def update(self): if self.formula == "": self.formula = "0" self.lbl.configure(text=self.formula) 

Так, как у нас нет ввода с клавиатуры, мы можем позволить себе сделать так, просто проверить на спец. кнопки (C, DEL, =) и в остальных случаях просто добавить это к формуле.

У этого калькулятора множество недочетов, но мы и не стремились сделать его идеальным.

Прошу прощения за ошибки в статье. Пишите, я исправлюсь.

Полный код моей версии калькулятора:

from tkinter import * class Main(Frame): def __init__(self, root): super(Main, self).__init__(root) self.build() def build(self): self.formula = "0" self.lbl = Label(text=self.formula, font=("Times New Roman", 21, "bold"), bg="#000", foreground="#FFF") self.lbl.place(x=11, y=50) btns = [ "C", "DEL", "*", "=", "1", "2", "3", "/", "4", "5", "6", "+", "7", "8", "9", "-", "(", "0", ")", "X^2" ] x = 10 y = 140 for bt in btns: com = lambda x=bt: self.logicalc(x) Button(text=bt, bg="#FFF", font=("Times New Roman", 15), command=com).place(x=x, y=y, width=115, height=79) x += 117 if x > 400: x = 10 y += 81 def logicalc(self, operation): if operation == "C": self.formula = "" elif operation == "DEL": self.formula = self.formula[0:-1] elif operation == "X^2": self.formula = str((eval(self.formula))**2) elif operation == "=": self.formula = str(eval(self.formula)) else: if self.formula == "0": self.formula = "" self.formula += operation self.update() def update(self): if self.formula == "": self.formula = "0" self.lbl.configure(text=self.formula) if __name__ == '__main__': root = Tk() root["bg"] = "#000" root.geometry("485x550+200+200") root.title("Калькулятор") root.resizable(False, False) app = Main(root) app.pack() root.mainloop() 

Сделать калькулятор на Python

Вот текст задачи: Реализуйте простой калькулятор, который позволяет выполнять операции сложения, вычитания, умножения и деления двух целых чисел. Калькулятор должен: Запрашивать у пользователя выбор операции: сложение (1), вычитание (2), умножение (3), или деление (4). Запрашивать два числа для выполнения выбранной операции, каждое в новой строке. Выполнять выбранную операцию над этими числами. Выводить результат операции. Как только пользователь при выборе операции вводит 0, калькулятор завершает работу с текстом «Программа завершена.» Более того, калькулятор обрабатывает ошибки: При выборе деления, если второе число будет 0, он выдаст ошибку «Делить на ноль нельзя!» При вводе неверной команды выдаст ошибку «Неверная команда!» При этом, после вывода ошибок программа продолжает работу, пока не получит команду 0. это мое решение:

operatorr = int(input()) while operatorr != 0: n1 = int(input()) n2 = int(input()) if operatorr == 0: break if operatorr == 1: print(n1 + n2) elif operatorr == 2: print(n1 - n2) elif operatorr == 3: print(n1 * n2) elif operatorr == 4: if n2 == 0: print('Делить на ноль нельзя!') else: print(n1 // n2) else: print('Неверная команда!') operatorr = int(input()) print('Программа завершена.') 

как можно сократить код? Только не нужно через всякие функции и так далее, на уровне именно цикла While, как тут можно покороче сделать, и есть ли какие то ошибки?

Отслеживать

49.3k 17 17 золотых знаков 57 57 серебряных знаков 101 101 бронзовый знак

d3174 / Калькулятор Python

Save d3174/225ed0d7fe5b8e5ec02fa85326eb64c4 to your computer and use it in GitHub Desktop.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

print (‘Приветствуем вас в калькуляторе Python’)
q1 = int (input(‘Введите число 1: ‘))
q2 = int (input(‘Введите число 2: ‘))
v = int (input(‘Какую операцию вы хотите выполнить? \n 1 Сложение \n 2 Вычитание \n 3 Деление \n 4 Умножение \n’))
if v == 1:
r = q1 + q2
p = ‘сложения’
t = p
if v == 2:
r = q1 — q2
l = ‘вычитания’
t = l
if v == 3:
r = float(q1 / q2)
m = ‘деления’
t = m
if v == 4:
r = q1 * q2
n = ‘умножения’
t = n
print (‘Результат ‘,t,’ = ‘,r)

yasich7 commented May 5, 2019

Where I can teach a Python?

MotoIlyuha commented Jan 11, 2021
MotoIlyuha commented Jan 11, 2021

Очень рекомендую курс на платформе Stepik (https://stepik.org/course/512/syllabus). Я сам выучил базовый уровень языка по этому курсу всего за две недели, что в дальнейшем помогло мне выигрывать серьезные олимпиады. Звучит как реклама 🙂

SergMagpie commented Jan 28, 2021

Очень рекомендую курс на платформе Stepik (https://stepik.org/course/512/syllabus). Я сам выучил базовый уровень языка по этому курсу всего за две недели, что в дальнейшем помогло мне выигрывать серьезные олимпиады. Звучит как реклама 🙂

Its great! I’m too learn in Stepik

SmIrOn123 commented Sep 11, 2021

`print (‘Приветствуем вас в калькуляторе Python’)
q1 = int (input(‘Введите число 1: ‘))
q2 = int (input(‘Введите число 2: ‘))
q3

if q3== +:
r = q1 + q2
p = ‘сложения’
t = p
if q3 == -:
r = q1 — q2
l = ‘вычитания’
t = l
if q3 == *:
r = float(q1 / q2)
m = ‘деления’
t = m
if q3 == /:
r = q1 * q2
n = ‘умножения’
t = n
print (‘Результат ‘,t,’ = ‘,r)`

syrgabek commented Mar 3, 2022
tenz0wo commented Apr 14, 2022 •

еще продуктивнее)

f = int(input(‘Выберите функцию \nСложение — 1\nВычитание — 2\nУмножение — 3\nДеление — 4\nВозведение в квадрат — 5\nВычисление квадратного корня — 6\nВычисление синуса — 7\nВычисление косинуса — 8\n’))

if f == 1:
ch1 = int(input(‘Введите первое число: ‘))
ch2 = int(input(‘Введите второе число: ‘))
r = ch1 + ch2
elif f == 2:
ch1 = int(input(‘Введите первое число: ‘))
ch2 = int(input(‘Введите второе число: ‘))
r = ch1 — ch2
elif f == 3:
ch1 = int(input(‘Введите первое число: ‘))
ch2 = int(input(‘Введите второе число: ‘))
r = ch1 * ch2
elif f == 4:
ch1 = int(input(‘Введите первое число: ‘))
ch2 = int(input(‘Введите второе число: ‘))
r = float(ch1 / ch2)
elif f == 5:
ch = int(input(‘Введите число: ‘))
r = ch * ch

elif f == 6:
ch = int(input(‘Введите число: ‘))
sqrt = ch ** (0.5)
r = sqrt

elif f == 7:
ch = int(input(‘Введите число: ‘))
r = math.sin(ch)

elif f == 8:
ch = int(input(‘Введите число: ‘))
r = math.cos(ch)

fr1tch commented Jun 30, 2022

import math
def calculator():
try:
print(‘\nВітаємо у кулькуляторі’)
print(‘\n1 — Додавання \n2 — Віднімання \n3 — Множення \n4 — Ділення \n5 — Степінь числа(друге число — степінь) \n6 — Квадратний корінь числа \n7 — Знайти синус \n8 — Знайти косинус \n9 — Знайти тангенс’)
o1=float(input(‘\nВиберіть дію зі списку вище: ‘))
def value1():
global v1
global v2
v1 = float(input(‘\nВведіть перше число: ‘))
v2 = float(input(‘\nВведіть друге число: ‘))
def value2():
global v3
v3 = float(input(‘\nВведіть число:’))
if o1 value1()
if o1 == 1:
r = v1 + v2
print(‘Ваш результат:’,r)
elif o1 == 2:
r = v1 — v2
print(‘Ваш результат:’,r)
elif o1 == 3:
r = v1 * v2
print(‘Ваш результат:’,r)
elif o1 == 4:
r = v1 / v2
print(‘Ваш результат:’,r)
elif o1 == 5:
r =pow(v1,v2)
print(‘Ваш результат:’,r)
if o1 >= 6:
value2()
if o1 == 6:
r = math.sqrt(v3)
print(‘Ваш результат:’,r)
elif o1 == 7:
r = math.sin(v3)
print(‘Ваш результат:’,r)
elif o1 == 8:
r = math.cos(v3)
print(‘Ваш результат:’,r)
elif o1 == 9:
r = math.tan(v3)
print(‘Ваш результат:’,r)
ask = input(‘Ви бажаєте продовжити?(Так/Ні): ‘)
if ask == ‘Так’ or ask == ‘так’:
calculator()
else:
print(‘На все добре!’)
except:
print(‘Сталась помилка. Спробуйте ще раз :(‘)
calculator()

viktoryarosh commented Jan 17, 2023

import math def calculator(): try: print(‘\nВітаємо у кулькуляторі’) print(‘\n1 — Додавання \n2 — Віднімання \n3 — Множення \n4 — Ділення \n5 — Степінь числа(друге число — степінь) \n6 — Квадратний корінь числа \n7 — Знайти синус \n8 — Знайти косинус \n9 — Знайти тангенс’) o1=float(input(‘\nВиберіть дію зі списку вище: ‘)) def value1(): global v1 global v2 v1 = float(input(‘\nВведіть перше число: ‘)) v2 = float(input(‘\nВведіть друге число: ‘)) def value2(): global v3 v3 = float(input(‘\nВведіть число:’)) if o1 = 6: value2() if o1 == 6: r = math.sqrt(v3) print(‘Ваш результат:’,r) elif o1 == 7: r = math.sin(v3) print(‘Ваш результат:’,r) elif o1 == 8: r = math.cos(v3) print(‘Ваш результат:’,r) elif o1 == 9: r = math.tan(v3) print(‘Ваш результат:’,r) ask = input(‘Ви бажаєте продовжити?(Так/Ні): ‘) if ask == ‘Так’ or ask == ‘так’: calculator() else: print(‘На все добре!’) except: print(‘Сталась помилка. Спробуйте ще раз :(‘) calculator()

на функції try помилка і далі не працює

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Footer

© 2024 GitHub, Inc.

You can’t perform that action at this time.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *