Калькулятор на 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?
Я хочу сделать калькулятор на Python. Когда я смотрю в интернете как сделать калькулятор на Python, мне попадаются калькуляторы по типу введите первый, введите второй оператор. Как можно сделать так, чтоб можно было просто написать 2 + 2 и получить ответ?
Отслеживать
1,037 1 1 золотой знак 3 3 серебряных знака 20 20 бронзовых знаков
задан 10 дек 2020 в 12:52
Руслан Исаев Руслан Исаев
115 1 1 серебряный знак 6 6 бронзовых знаков
Открыть консоль набрать python и ввести 2+2. в ответ получите 4.
10 дек 2020 в 12:58
а есть еще bc
10 дек 2020 в 13:22
10 дек 2020 в 14:13
Если вы в интернетe не читаете, а смотрите, то есть такой пример.
10 дек 2020 в 14:19
Если хочется чего-то совсем мудрёного, то вот у меня есть один такой проект: gitflic.ru/project/nchistov/…
5 дек 2023 в 9:49
5 ответов 5
Сортировка: Сброс на вариант по умолчанию
вот самый функциональный калькулятор:
print("результат: ", eval(input("Введите: ")))
но пользоваться им очень опасно
Отслеживать
ответ дан 10 дек 2020 в 13:09
37.4k 4 4 золотых знака 28 28 серебряных знаков 72 72 бронзовых знака
На верхнем уровне уровне работает read-eval-print loop (REPL).
read читает строку и разбивает её на токены — минимальные элементы имеющие самостоятельное значение. Простейший способ разбить на токены — регулярное выражение, которое выделит символы операций ‘+-*/()’ и числа.
print печатает ответ.
eval по последовательности токенов вычисляет значение. Для вычисления используется алгоритм сортировочной станции. shunting-yard algorithm — более подробное изложение, на английском.
Алгоритм сортировочной станции переводит обычную алгебраическую (её ещё называют инфиксной) запись в обратную польскую нотацию (постфиксную запись). Несколько примеров:
1 - 2 -> 1 2 - 1 - 2 * 3 -> 1 2 3 * - (1 - 2) * 3 -> 1 2 - 3 *
Постфиксная запись обходится без скобок. Вычислить значение выражения в такой записи можно с помощью стековой машины. Для записи 1 2 3 * — последовательность действий будет такой:
токен стек комментарий [] в начале стек пуст 1 [1] число 1 кладем в стек 2 [1 2] число 2 кладем в стек 3 [1 2 3] число 3 кладем в стек * [1 6] выбираем из стека два числа и кладём назад их произведение - [-5] выбираем из стека два числа и кладём назад их разность
На Java можно уложится в сотню строк. На Python думаю что пятидесяти хватит.
Как создать калькулятор на Питоне?
Всем начинающим программистам хочется после прохождения вводного курса по языку программирования попробовать себя в создании чего-нибудь практически полезного. Мы предлагаем вам создать и испытать в действии самый настоящий калькулятор, созданный за несколько минут на ЯП Питон.

СоздаКак создать калькулятор на Питонейте простой калькулятор, который считывает из строки ввода три строки: 1-ое число, 2-ое число и операцию, после чего применяет операцию к введённым числам («первое число» «операция» «второе число»), а затем выводит результат на экран.
Калькулятор должен поддерживать следующие операции: +, -, /, *, mod, pow, div
- mod — это взятие остатка от деления,
- pow — возведение в степень,
- div — целочисленное деление.
Если выполняется деление и второе число равно 0, необходимо выводить строку «Деление на 0!».
На вход программы нужно подавать вещественные числа!
Код программы Калькулятор
x=float(input("Введите значение x Введите значение y Введите оператор (+, -, /, *, mod, pow, div) Деление на 0!"
print("Результат вычислений brush: py">elif y==0:
result="Деление на 0!"
Примеры результатов вычислений программы
Python 3.5.2 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
Введите значение x = 12
Введите значение y = 12
Введите оператор (+, -, /, *, mod, pow, div) = pow
Результат вычислений = 8916100448256
© 2013-2020 Информатика. Полезные материалы по информационным технологиям. Использование материалов без активной ссылки на сайт запрещено! Публикация в печати только с письменного разрешения администрации.
Программа «Простейший калькулятор»
Написать программу, которая выполняет над двумя вещественными числами одну из четырех арифметических операций (сложение, вычитание, умножение или деление). Программа должна завершаться только по желанию пользователя.
Решение задачи на языке программирования 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 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("Деление на ноль!") case '0': break case _: print("Неверный знак операции!")
X Скрыть Наверх
Решение задач на Python