Мы разработали простой калькулятор на языке 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.

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

Выход:
Здесь мы просим пользователя выбрать операцию из предложенных вариантов. Если он выберет опцию под номером 1, 2, 3 или 4, то ввод будет считаться верным. В противном случае на экране появится сообщение «Неверный ввод».

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

калькулятор на Python

Содержание

С использованием 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 с использованием класса

Выход:

Калькулятор в Python с использованием class

Калькулятор без функции

Мы разработали простой калькулятор на 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 и вывод.

Калькулятор в коде Python

Выход:

Код

С помощью Tkinter

Давайте рассмотрим, как создать простой калькулятор, используя Python и Tkinter. Надеюсь, этот пример калькулятора на Python с использованием Tkinter поможет вам создать свой собственный калькулятор на Python.

Планирование

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

  • Источником вдохновения является калькулятор на операционной системе Windows 10.
  • Он имеет серый фон на дисплее и черный фон на кнопках.
  • Цвет текста всего приложения белый.
  • Приложение всегда открывается в правом нижнем углу.
  • Числа отображаются в правой части экрана.

После рассмотрения всего приложения-калькулятора Windows 10 пришло время написать то, что мы собираемся использовать или реализовать в нашем приложении.

  1. Каждый раз приложение будет открываться в правом нижнем углу.
  2. приложение будет иметь серый фон на дисплее и черный фон на кнопках.
  3. Цвет текста всего приложения будет белым.
  4. окно будет иметь фиксированный размер и не может быть изменено.
  5. Калькулятор будет иметь базовые функции сложения, вычитания, умножения и деления.
  6. Числа будут отображаться в правой части экрана.

Алгоритм создания

В этом разделе мы рассмотрим, как создать калькулятор с помощью 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 калькулятора:

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 в качестве вывода.

Калькулятор Python Tkinter с использованием функции eval

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

Выход:

Калькулятор Tkinter на Python

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