Мы разработали простой калькулятор на языке Python, который может выполнять различные арифметические операции, включая сложение, вычитание, умножение и деление. Для этого мы создали пользовательские функции add(), subtract(), multiply() и divide(), которые оценивают соответствующую операцию и выводят результат.
Пример:
def add(x,y): return x + y def subtract(x,y): return x - y def multiply(x,y): return x * y def divide(x,y): return x / y print("Select operation.") print("1.Add") print("2.Subtract") print("3.Multiply") print("4.Divide") while True: choice = input("Enter your choice(1/2/3/4): ") if choice in('1', '2', '3', '4'): number1 = float(input("Enter first number: ")) number2 = float(input("Enter second number: ")) if choice == '1': print(number1, "+", number2, "=", add(number1, number2)) elif choice == '2': print(number1, "-", number2, "=", subtract(number1, number2)) elif choice == '3': print(number1, "*", number2, "=", multiply(number1, number2)) elif choice == '4': print(number1, "/", number2, "=", divide(number1, number2)) break else: print("Entered input is invalid")
Вы можете обратиться к скриншоту ниже, чтобы создать калькулятор на Python.
Выход:
Здесь мы просим пользователя выбрать операцию из предложенных вариантов. Если он выберет опцию под номером 1, 2, 3 или 4, то ввод будет считаться верным. В противном случае на экране появится сообщение «Неверный ввод».
Если выбор пользователя верен, то ему нужно будет ввести два числа. После этого программа выполнит операцию, выбранную пользователем.
С использованием class
Давайте шаг за шагом посмотрим, как создать класс, который будет выполнять основные операции калькулятора:
- Чтобы сделать калькулятор, используя class. Классы необходимы для создания объекта. Классы делают код более эффективным и простым для понимания.
- Сначала мы создадим калькулятор класса, и в нем будут определены все функции, такие как сложение, вычитание, умножение и деление.
- Self используется при вызове функции с помощью obj1.function(). Здесь функция вызовет саму себя.
- Теперь мы возьмем вводимые пользователем данные и объект будет создан.
- И, наконец, создайте, что пользователь выбирает для выполнения необходимой ему операции и выводит значение на выходе.
Пример:
class calculator: def addition(self): print(x + y) def subtraction(self): print(x - y) def multiplication(self): print(x * y) def division(self): print(x / y) x = int(input("Enter first number:")) y = int(input("Enter second number:")) obj1 = calculator() choice = 1 while choice !=0: print("1. ADDITION") print("2. SUBTRACTION") print("3. MULTIPLICATION") print("4. DIVISION") choice = int(input("Enter your choice:")) if choice == 1: print(obj1.addition()) elif choice == 2: print(obj1.subtraction()) elif choice == 3: print(obj1.multiplication()) elif choice == 4: print(obj1.division()) else: print("Invalid choice")
Теперь вы можете увидеть код с выводом.
Выход:
Калькулятор без функции
Мы разработали простой калькулятор на Python, который не имеет функции для выполнения различных арифметических операций, таких как сложение, вычитание, умножение или деление.
Пример:
first_val = input("Enter 1st number: ") first_val = int(first_val) cal = input("Enter operator: ") second_val = input("Enter 2nd number: ") second_val = int(second_val) if cal == "+": print(first_val + second_val) elif cal == "-": print(first_val - second_val) elif cal == "*": print(first_val * second_val) elif cal == "/": print(first_val / second_val)
На скриншоте ниже показано, как мы можем создать калькулятор без функции.
Код
Вот код калькулятора на языке Python. Мы создали отдельную функцию для выполнения операций сложения, вычитания, умножения и деления. Функция принимает ввод от пользователя и выбранный им оператор, а затем возвращает результат.
Пример:
def add(x, y): return x + y def subtract(x, y): return x - y def multiply(x, y): return x * y def divide(x, y): return x / y print("select an operation") print("+") print("-") print("*") print("/") choice = input("Enter any operator to use") a = int(input("Enter first number: ")) b = int(input("Enter second number: ")) if choice == '+': print(a,"+",b,"=", add(a,b)) elif choice == '-': print(a,"-",b,"=", subtract(a,b)) elif choice == '*': print(a,"*",b,"=", multiply(a,b)) elif choice == '/': print(a,"/",b,"=", divide(a,b)) else: print("Invalid input")
Вы можете увидеть снимок экрана ниже для калькулятора в коде Python и вывод.
Выход:
С помощью Tkinter
Давайте рассмотрим, как создать простой калькулятор, используя Python и Tkinter. Надеюсь, этот пример калькулятора на Python с использованием Tkinter поможет вам создать свой собственный калькулятор на Python.
Планирование
В этой части мы рассмотрим, как можно самостоятельно подготовиться к написанию кода для калькулятора на Tkinter с использованием языка Python. Мы обсудим, как будет выглядеть приложение, какие функции оно будет выполнять и где можно найти идеи для его создания.
- Источником вдохновения является калькулятор на операционной системе Windows 10.
- Он имеет серый фон на дисплее и черный фон на кнопках.
- Цвет текста всего приложения белый.
- Приложение всегда открывается в правом нижнем углу.
- Числа отображаются в правой части экрана.
После рассмотрения всего приложения-калькулятора Windows 10 пришло время написать то, что мы собираемся использовать или реализовать в нашем приложении.
- Каждый раз приложение будет открываться в правом нижнем углу.
- приложение будет иметь серый фон на дисплее и черный фон на кнопках.
- Цвет текста всего приложения будет белым.
- окно будет иметь фиксированный размер и не может быть изменено.
- Калькулятор будет иметь базовые функции сложения, вычитания, умножения и деления.
- Числа будут отображаться в правой части экрана.
Алгоритм создания
В этом разделе мы рассмотрим, как создать калькулятор с помощью Tkinter на языке программирования Python. Также мы предоставим диаграмму потоков данных (DFD) для этого калькулятора.
WS = Тк()
ws.title(‘Калькулятор’)
ws.geometry(‘250×400+500+100’)
ws.resizable(0,0)
- первая строка кода используется для инициализации родительского слоя.
- вторая строка используется для установки заголовка окна. Заголовок — это имя в верхней части окна рядом с пером.
- третья строка задает ширину, высоту и положение окна.
- ширина = 250
- высота = 400
- позиция х = 500
- позиция у = 100
- Изменение размера определяет размер экрана, который можно растянуть. Экран можно растягивать по осям x и y. Поскольку мы указали оба значения равными 0. Это означает, что экран нельзя растянуть ни в одну из сторон.
Frame_1 = Кадр(WS)
frame_1.pack(expand=True, fill=BOTH)
- Чтобы разместить виджеты, такие как метки и кнопки, нам нужно создать 4 фрейма.
- Каждому кадру разрешено полностью расширяться в направлениях x и y, если доступно место.
- Таким образом, все рамки будут иметь одинаковое пространство, а расположенные в них кнопки будут симметричными.
- expand=True: позволяет расширить доступное пространство.
- fill=both: направление расширения
key_1 = Кнопка(
кадр_1,
текст = ‘1’,
шрифт =(«Ариал», 22),
граница = 0,
рельеф = ПАЗОВКА,
бг = ‘#2E2E2B’,
fg = ‘белый’,
команда = лямбда: дисплей(1)
)
В этом коде мы создаём кнопку. Чтобы понять, что представляет собой кнопка, обратитесь, пожалуйста, к разделу о кнопках.
Здесь мы вызываем функцию по команде, но не можем передать ей аргумент. Поэтому мы использовали анонимную функцию лямбда. Подробнее об анонимных функциях можно узнать в соответствующем разделе.
Вот DFD калькулятора:
Глобальные переменные:
num = ''
- Переменные, используемые в функции, ограничены только этой функцией.
- Если мы хотим использовать определенную переменную в другой функции.
- Тогда мы должны объявить эту переменную как глобальную переменную.
- В этом коде мы объявили num как глобальную переменную.
- Любая функция, ссылающаяся на эту переменную, должна использовать ключевое слово global перед именем переменной.
- Изменения, внесенные любой функцией в эту переменную, будут наблюдаться и другими функциями.
- Например, если какая-либо функция устанавливает значение числа равным «10», то другие функции, использующие число, также будут иметь значение числа как «10».
Объясняющая функция: equal_bt()
def equal_btn(): global num add=str(eval(num)) scr_lbl['text'] = add num=''
- Функция qual_btn() используется несколько раз с небольшим изменением имени переменной в строке 3 и строке 4.
- Здесь важную роль играет встроенная функция eval().
- eval() принимает строку в качестве входных данных, преобразует ее в целое число и выполняет операцию.
- Если строка «2+3» передана в eval, она вернет 5 в качестве вывода.
def clear_scr(число):
def clear_scr(): global num num = '' scr_lbl['text'] = num
- Функция вызывается, когда пользователь нажимает C.
- Он очищает все на дисплее и устанавливает значение num в пустую строку.
def display(число):
def display(number): global num num = num + str(number) scr_lbl['text'] = num
- Функция отвечает за отображение чисел на экране.
- Каждый раз, когда пользователь нажимает на кнопку с номером, она согласуется с существующей строкой.
- При нажатии на 1 на экране отображается 1. затем, когда мы нажимаем на 2, отображается 12 и так далее.
Код:
from tkinter import * ws = Tk() ws.title('Calculator') ws.geometry('250x400+500+100') ws.resizable(0,0) # global variables num = '' # functions def display(number): global num num = num + str(number) scr_lbl['text'] = num def clear_scr(): global num num = '' scr_lbl['text'] = num def equal_btn(): global num add=str(eval(num)) scr_lbl['text'] = add num='' def equal_btn(): global num sub=str(eval(num)) scr_lbl['text'] = sub num='' def equal_btn(): global num mul=str(eval(num)) scr_lbl['text'] = mul num='' def equal_btn(): global num div=str(eval(num)) scr_lbl['text'] = div num='' var = StringVar() # frames frame_1 = Frame(ws) frame_1.pack(expand=True, fill=BOTH) frame_2 = Frame(ws) frame_2.pack(expand=True, fill=BOTH) frame_3 = Frame(ws) frame_3.pack(expand=True, fill=BOTH) frame_4 = Frame(ws) frame_4.pack(expand=True, fill=BOTH) # label scr_lbl = Label( frame_1, textvariable='', font=('Arial', 20), anchor = SE, bg = '#595954', fg = 'white' ) scr_lbl.pack(expand=True, fill=BOTH) # buttons key_1 = Button( frame_1, text='1', font=('Arial', 22), border = 0, relief = GROOVE, bg = '#2E2E2B', fg = 'white', command = lambda: display(1) ) key_1.pack(expand=True, fill=BOTH, side=LEFT) key_2 = Button( frame_1, text='2', font=('Arial', 22), border = 0, relief = GROOVE, bg = '#2E2E2B', fg = 'white', command = lambda: display(2) ) key_2.pack(expand=True, fill=BOTH, side=LEFT) key_3 = Button( frame_1, text='3', font=('Arial', 22), border = 0, relief = GROOVE, bg = '#2E2E2B', fg = 'white', command = lambda: display(3) ) key_3.pack(expand=True, fill=BOTH, side=LEFT) key_add = Button( frame_1, text='+', font=('Arial', 22), border = 0, relief = GROOVE, bg = '#2E2E2B', fg = 'white', command = lambda: display('+') ) key_add.pack(expand=True, fill=BOTH, side=LEFT) key_4 = Button( frame_2, text='4', font=('Arial', 22), border = 0, relief = GROOVE, bg = '#2E2E2B', fg = 'white', command = lambda: display(4) ) key_4.pack(expand=True, fill=BOTH, side=LEFT) key_5 = Button( frame_2, text='5', font=('Arial', 22), border = 0, relief = GROOVE, bg = '#2E2E2B', fg = 'white', command = lambda: display(5) ) key_5.pack(expand=True, fill=BOTH, side=LEFT) key_6 = Button( frame_2, text='6', font=('Arial', 22), border = 0, relief = GROOVE, bg = '#2E2E2B', fg = 'white', command = lambda: display(6) ) key_6.pack(expand=True, fill=BOTH, side=LEFT) key_sub = Button( frame_2, text='-', font=('Arial', 22), border = 0, relief = GROOVE, bg = '#2E2E2B', fg = 'white', command = lambda: display('-') ) key_sub.pack(expand=True, fill=BOTH, side=LEFT) key_7 = Button( frame_3, text='7', font=('Arial', 22), border = 0, relief = GROOVE, bg = '#2E2E2B', fg = 'white', command = lambda: display(7) ) key_7.pack(expand=True, fill=BOTH, side=LEFT) key_8 = Button( frame_3, text='8', font=('Arial', 22), border = 0, relief = GROOVE, bg = '#2E2E2B', fg = 'white', command = lambda: display(8) ) key_8.pack(expand=True, fill=BOTH, side=LEFT) key_9 = Button( frame_3, text='9', font=('Arial', 22), border = 0, relief = GROOVE, bg = '#2E2E2B', fg = 'white', command = lambda: display(9) ) key_9.pack(expand=True, fill=BOTH, side=LEFT) key_mul = Button( frame_3, text='*', font=('Arial', 22), border = 0, relief = GROOVE, bg = '#2E2E2B', fg = 'white', command = lambda: display('*') ) key_mul.pack(expand=True, fill=BOTH, side=LEFT) key_clr = Button( frame_4, text='C', font=('Arial', 22), border = 0, relief = GROOVE, bg = '#2E2E2B', fg = 'white', command = clear_scr ) key_clr.pack(expand=True, fill=BOTH, side=LEFT) key_0 = Button( frame_4, text='0', font=('Arial', 22), border = 0, relief = GROOVE, bg = '#2E2E2B', fg = 'white', command = lambda: display(0) ) key_0.pack(expand=True, fill=BOTH, side=LEFT) key_res = Button( frame_4, text='=', font=('Arial', 22), border = 0, relief = GROOVE, bg = '#2E2E2B', fg = 'white', command = equal_btn ) key_res.pack(expand=True, fill=BOTH, side=LEFT) key_div = Button( frame_4, text='/', font=('Arial', 22), border = 0, relief = GROOVE, bg = '#2E2E2B', fg = 'white', command = lambda: display('/') ) key_div.pack(expand=True, fill=BOTH, side=LEFT) ws.mainloop()
Выход: