Python калькулятор через функцию

Создаем продвинутый калькулятор на Python с Tkinter

Здравствуйте! В этой публикации я хочу рассказать Вам, как сделать продвинутый калькулятор на Python 3 с Tkinter.

Итак, импортируем модули, которые нам понадобятся для нашей программы.
Библиотека tkinter нам необходима для создания окна, грубо говоря.
Модуль math нам нужен для математических операций.

from tkinter import * from tkinter import messagebox from tkinter import ttk import math import sys

Следующими двумя строками мы создаем окно и даем ему имя.

root = Tk() root.title("Calculator")

Создаем список с именами будущих кнопок калькулятора. Я выбрал все самые интересные функции, чтобы продемонстрировать, как их реализовать.

bttn_list = [ "7", "8", "9", "+", "*", "4", "5", "6", "-", "/", "1", "2", "3", "=", "xⁿ", "0", ".", "±", "C", "Exit", "π", "sin", "cos", "(", ")","n!","√2", ]

Следующим отрезком кода мы создаем кнопки для нашего калькулятора.

r = 1 c = 0 for i in bttn_list: rel = "" cmd=lambda x=i: calc(x) ttk.Button(root, text=i, command = cmd, width = 10).grid(row=r, column = c) c += 1 if c > 4: c = 0 r += 1

В каждом калькуляторе есть, так называемое поле ввода, в которое пользователь вводит нужные данные для программы. Это могут быть цифры, функции и математические операции. Их можно вводить, как с клавиатуры, так и при нажатии на кнопку в калькуляторе.

Пример 1. Я нажимаю на кнопку «2» в калькуляторе и в этом поле ввода, отображается цифра 2.

В Python Tkinter поле ввода называется Entry, а, например, в Java Script — input.

calc_entry = Entry(root, width = 33) calc_entry.grid(row=0, column=0, columnspan=5)

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

#логика калькулятора def calc(key): global memory if key == "=": #исключение написания слов str1 = "-+0123456789.*/)(" if calc_entry.get()[0] not in str1: calc_entry.insert(END, "First symbol is not number!") messagebox.showerror("Error!", "You did not enter the number!") #исчисления try: result = eval(calc_entry.get()) calc_entry.insert(END, "=" + str(result)) except: calc_entry.insert(END, "Error!") messagebox.showerror("Error!", "Check the correctness of data")

str1 = «-+0123456789.*/)(«
Этой кода мы разрешаем пользователю вводить только символы -+0123456789.*/)(, а остальные исключаем, запрещаем вводить.

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

По сути, мы обрабатываем функцию, что сработает при нажатии на кнопку » python»>#очищение поля ввода elif key == «C»: calc_entry.delete(0, END)

Создаем функцию изменения минуса на плюс.
Пример 2. Мы ввели в окно Entry 5, при нажатии на кнопку «±», калькулятор выведет -5.
И наоборот, мы ввели -5, нажали на кнопку «±» и получили ответ от программы 5.

 elif key == "±": if "=" in calc_entry.get(): calc_entry.delete(0, END) try: if calc_entry.get()[0] == "-": calc_entry.delete(0) else: calc_entry.insert(0, "-") except IndexError: pass

Следующая функция — число pi. При нажатии на кнопку «П» программа выведет нам 3.14159265359, то есть число Pi. Вот тут нам и пригодилась библиотека math.

elif key == "π": calc_entry.insert(END, math.pi)

Функция выхода из программы. При нажатии на кнопку «Exit» окно Tkinter будет уничтожено и процесс остановлен. В этой функции нам нужна была библиотека sys.

elif key == "Exit": root.after(1,root.destroy) sys.exit

Функция возведения в степень. Нужно ввести число, которое нужно возвести в степень. Далее программа выводит **. В Python этот символ означает возведение в степень 2**6 (возведение 2 в степень 6). Мы используем для счета в программе eval, а значит можно выполнить это так же, как и в Питоне. Ну и в конце мы вводим необходимую степень.
Пример 3. Нам нужно 3 возвести в 5 степень. Вводим число 3, нажимаем на кнопку «xⁿ» (3**. ) и вводим необходимую степень, — 5 (3**5). Нажимаем на кнопку » python»>elif key == «xⁿ»: calc_entry.insert(END, «**»)

Опишу сразу две функции, так, как они идентичны.
Функция sin x и cos x.

Все просто, при нажатии на клавишу sin или же cos мы получаем синус или косинус по данному числу.

elif key == "sin": calc_entry.insert(END, "=" + str(math.sin(int(calc_entry.get())))) elif key == "cos": calc_entry.insert(END, " )" мы получаем ), аналогично поступаем со второй функцией. 

elif key == "(": calc_entry.insert(END, "(") elif key == ")": calc_entry.insert(END, ")")

Функция получения факториала из данного числа.

elif key == "n!": calc_entry.insert(END, " python">elif key == "√2": calc_entry.insert(END, " python">else: if " python">root.mainloop()

Источник

Простой калькулятор на Python

Самый простой калькулятор на Python 3 для новичков

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

Ещё можете посмотреть статью «Парсер страниц на Python», тоже очень полезна новичкам.

Консольный калькулятор на Python:

Как говорилось выше, мы сделаем легкий калькулятор на Python, и для этого нам нужно создать только один Python файл, я его назову «main.py».

Внутри него создадим функцию которая будет за всё отвечать, вот примерно так:

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

Потом запускаем бесконечный цикл и в нём даём выбрать действие, тут как обычно, то есть, если выбираем знак плюса, то будем складывать и т.д..

После идёт проверка команд, если выбрать кнопку «q», то выходим из программы, если же это арифметический знак, то вводим два числа, кладём их в переменные в формате числа с плавающей точкой.

Потом проверяем конкретный знак, зависимо от него и делаем действии, выводим на экран, самое интересное это с делением, мы делаем проверку, если делитель, то есть «y», равен нулю то тогда не будем делить.

Последние что осталось это объявить переменную, вот:

Источник

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

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)

Where I can teach a Python?

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

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

Its great! I'm too learn in Stepik

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

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

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)

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

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 помилка і далі не працює

You can’t perform that action at this time.

Источник

technillogue / calc.py

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

operations =
"+" : lambda x , y : x + y ,
"-" : lambda x , y : x - y ,
"/" : lambda x , y : x / y ,
"*" : lambda x , y : x * y
>
def calculate ( expr ):
numxChars = ""
operation = None
numyChars = ""
for char in expr :
if char . isdigit ():
if operation is None :
numxChars += char
else :
numyChars += char
elif char in operations :
operation = char
elif char . isspace :
pass
else :
raise Exception ( "invalid charecter: " + char )
return operations [ operation ]( int ( numxChars ), int ( numyChars ))
print calculate ( raw_input ( "Input? " ))

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

$ python calc.py
Input? 1 + 1
2
Input? 2/1
2
Input? 3-4
-1
Input? 7*5
35

Источник

Читайте также:  Vector graphics in python
Оцените статью