Python для математических вычислений
Содержание:
- Как написать калькулятор на C++
- Компилятор GCC. Первая программа на Windows
- Pathlib (Python 3.4+)
- Подключение библиотек и объявление переменных
- 2: Добавление операторов
- Дальнейшие идеи
- Среда разработки
- Написание простейшего калькулятора в Python 3
- 5: Дополнительные действия
- Классы данных (Python 3.7+)
- Подсказки типов | Ожидание типа | Type hinting (Python 3.5+)
- Написание калькулятора на Python
- Умножение и деление
- Создать-программу калькулятор в консоли на Java
- 3: Добавление условного оператора
- Действия
- Часть четвертая: необязательная
- 4: Определение функций
- Память
- О сервисе Python Fiddle
- Перечисления enum (Python 3.4+)
- Сложение и вычитание
- Часть вторая: создаем GUI для программы
- Операторы Python
- Состояние
Как написать калькулятор на C++
Чтобы сделать простой калькулятор в программировании на C++, который выполняет четыре основных математических операции ( сложение, вычитание, умножение и деление ) в зависимости от выбора пользователя, используйте регистр переключения, чтобы определить оператор ввода для выполнения требуемого вычисления, а затем отобразить результат, как показано здесь в следующей программе.
Программный код C++ для создания простого калькулятора
Ниже приводится простая программа на C++, которая представляет собой программу на основе меню, основанную на простых вычислениях, таких как сложение, вычитание, умножение и деление по выбору пользователя:
Когда вышеупомянутая программа C++ компилируется и выполняется, она даст следующий результат:
Компилятор GCC. Первая программа на Windows
Последнее обновление: 18.05.2017
Для создания программ на Си необходим текстовый редактор, с помощью которого можно набрать исходный код. И также необходим компилятор,
который принимает файл с исходным кодом на Си и компилирует его в исполняемый файл.
При запуске установщика откроется следующее окно:
Нажмем на кнопку Next > и перейдем к следующему шагу:
Если версия ОС 64-битная, то в поле следует выбрать пункт x86_64. Остальные настройки
оставим по умолчанию и нажмем на кнопку Next >. На следующем шаге укажем путь, по которому будет устанавливаться пакет:
Можно оставить настройки по умолчанию. И после перехода к следующему шагу собственно начнется установка.
После завершения установки на жестком диске по пути, которое было выбрано для установки, появятся все необходимые файлы компиляторов.
В моем случае они находятся по пути C:\Program Files (x86)\mingw-w64\i686-7.1.0-posix-dwarf-rt_v5-rev0\mingw32\bin:
В зависимости от версии пакета точный путь может отличаться, но в любом случае все файлы будут располагаться по тому пути, который был указан на шаге установки.
В частности, файл gcc.exe как раз и будет представлять компилятор для языка Си.
Далее для упрощения запуска компилятора мы можем добавить путь к нему в Переменные среды. Для этого перейдем к окну
Система -> Дополнительные параметры системы -> Переменные среды:
И добавим путь к компилятору:
Итак, компилятор установлен, и теперь мы можем написать первую программу. Для этого потребуется любой текстовый редактор для набора исходного кода.
Можно взять распространенный редактор Notepad++ или даже обычный встроенный Блокнот.
Итак, создадим на жестком диске папку для исходных файлов. А в этой папке создадим новый файл, который назовем hello.c.
В моем случае файл hello.c находится в папке C:\c.
Теперь определим в файле hello.c простейший код, который будет выводить строку на консоль:
#include <stdio.h> // подключаем заголовочный файл stdio.h int main(void) // определяем функцию main { // начало функции printf("Hello World! \n"); // выводим строку на консоль return 0; // выходим из функции } // конец функции
Для вывода строки на консоль необходимо подключить нужный функционал. Для этого в начале файла идет строка
#include <stdio.h>
Директива include подключает заголовочный файл stdio.h, который содержит определение функции printf, которая нужна для вывода строки на консоль.
Далее идет определение функции int main(void). Функция main должна присутствовать в любой программе на Си, с нее собственно и начинается
выполнение приложения.
Ключевое слово int в определении функции говорит о том, что функция возвращает целое число.
А слово void в скобках указывает, что функция не принимает параметров.
Тело функции main заключено в фигурные скобки {}. В теле функции происходит вывод строки на консоль с помощью функции printf, в которую передается выводимая строка «Hello world!».
В конце осуществляем выход из функции с помощью оператора return. Так как функция должна возвращать целое число, то после return указывается число 0.
Ноль используется в качестве индикатора успешного завершения программы.
После каждого действия в функции ставятся точка с запятой.
Теперь скомпилируем этот файл. Для этого откроем командную строку Windows и вначале с помощью команды cd перейдем к папке с исходным файлом:
cd C:\c
Чтобы скомпилировать исходный код, необходимо компилятору gcc передать в качестве параметра файл hello.c:
gcc hello.c
После этого будет скомпилирован исполняемый файл, который в Windows по умолчанию называется a.exe. И мы можем обратиться к этому файлу, и в этом случае консоль выведет
строку «Hello World!», собственно как и прописано в коде.
НазадВперед
Pathlib (Python 3.4+)
F-строки — это отличное решение, но некоторые строки, такие как пути файлов, имеют свои собственные библиотеки, которые заметно упрощают работу. Python 3 предоставляет pathlib в качестве удобной абстракции для работы с путями файлов.
Python
from pathlib import Path
root = Path(‘post_sub_folder’)
print(root)
# post_sub_folder
path = root / ‘happy_user’
# Делаем путь абсолютным
print(path.resolve())
# /home/weenkus/post_sub_folder/happy_user
1 |
frompathlib importPath root=Path(‘post_sub_folder’) print(root) # post_sub_folder path=root’happy_user’ # Делаем путь абсолютным print(path.resolve()) # /home/weenkus/post_sub_folder/happy_user |
Подключение библиотек и объявление переменных
Подключаем стандартные библиотеки Tkinter, datetime и calendar с помощью import. Инициализируем класс root, с помощью которого будет отрисовываться графический интерфейс. Задаем заголовок окна «Calendar». Объявляем пустой список . В дальнейшем в нем будут храниться поля таблицы. Каждое такое поле соответствует определенному дню.
В переменную now будем хранить текущую дату. В переменных и будут храниться год и месяц, календарь которых в данный момент отображается.
from tkinter import * import calendar import datetime root = Tk() root.title('Calendar') days = [] now = datetime.datetime.now() year = now.year month = now.month
2: Добавление операторов
Теперь нужно добавить четыре базовых оператора: + (сложение), – (вычитание), * (умножение) и / (деление).
Программу лучше разрабатывать постепенно, чтобы иметь возможность протестировать её на каждом этапе.
Сначала добавьте оператор сложения. Поместите два числа в print, чтобы калькулятор отображал результат.
Запустите программу и попробуйте сложить два числа:
Теперь можно немного усложнить программу. Пусть кроме результата калькулятор также отображает числа, введенные пользователем.
Снова запустите программу и попробуйте ввести какие-нибудь числа:
Теперь пользователь сможет убедиться, что ввел правильные числа.
На данном этапе можно добавить остальные операторы, используя такой же формат:
Теперь калькулятор может выполнять математические вычисления при помощи операторов +, -, * и /. Далее нужно ограничить количество операций, которые программа может выполнить за один раз.
Дальнейшие идеи
Текущая версия «Calculon» поддерживает только базовые математические операции. Большая часть пользовательских калькуляторов также включает в себя поддержку научных (в некоторых случаях и программных) режимов, которые добавляют ряд альтернативных функций.
В «Calculon» вы можете определить эти дополнительные операции как набор лямбд, каждая из которых принимает два параметра для обработки.
Переключение режимов (например, между нормальным и научным) в калькуляторе может быть для нынешнего макета, базирующегося на QMainWindow. Вы можете перебрать макет калькулятора в QtDesigner, чтобы иметь возможность использовать базу QWidget. Каждое представление – это обычный виджет, и переключение между режимами может быть выполнено смены вашего центрального виджета в рабочем окне.
Среда разработки
Код на python может быть помещен в файл с расширением .py и отправлен интерпретатору для выполнения. то классический подход, который обычно разбавляется использованием среды разработки, например pyCharm. Однако, для python (и не только) существует другой способ взаимодействия с интерпретатором — интерактивные блокноты jupyter, сохраняющие промежуточное состояние программы между выполнением различных блоков кода, которые могут быть выполнены в произвольном порядке. Этот способ взаимодействия позаимствован у блокнотов Mathematica, позже аналог появился и в MATLAB (Live script).
Таким образом вся работа с python-кодом переносится в браузер. Получившейся блокнот можно открыть с помощью nbviewer.jupyter.org, github (и gist) умеют самостоятельно показывать содержимое таких файлов (преобразовывать).
Из браузерной природы jupyter следуют его недостатки: отсутствие отладчика и проблемы с печатью большого количества информации (зависание окна браузера). Последняя проблема решается расширением, которое ограничивает максимальное количество символов, которое можно вывести в результате выполнения одной ячейки.
Написание простейшего калькулятора в Python 3
Язык программирования Python является отличным инструментом для обработки чисел и математических выражений. На основе этого качества можно создавать полезные программы.
В данном руководстве вам предлагается полезное упражнение: попробуйте написать простую программу командной строки для выполнения вычислений. Итак, в данном руководстве вы научитесь создавать простейший калькулятор в Python 3.
В руководстве используются математические операторы, переменные, условные выражения, функции.
Требования
Для выполнения руководства нужно установить Python 3 на локальную машину и развернуть среду разработки. Все необходимые инструкции можно найти здесь:
- Настройка локальной среды разработки для Python 3 в CentOS 7
- Настройка локальной среды разработки для Python 3 в Windows 10
- Настройка локальной среды разработки для Python 3 в Mac OS X
- Настройка локальной среды разработки для Python 3 в Ubuntu 16.04
5: Дополнительные действия
Написанная вами программа полностью готова к работе. Однако есть ещё много дополнений, которые при желании можно внести в код. Например, вы можете написать приветственное сообщение и добавить его в начало кода:
Также можно добавить в программу больше функций для обработки ошибок. К примеру, программа должна продолжать работу даже если пользователь вводит слово вместо числа. На данный момент это не так: программа выдаст пользователю ошибку и прекратит работу.
Кроме того, если при выборе оператора деления (/) пользователь выбирает знаменатель 0, он должен получить ошибку:
Для этого нужно написать исключение с помощью оператора try … except.
Программа ограничена 4 операторами, но вы можете расширить этот список:
Также в программу можно добавить операторы цикла.
Существует много способов для настройки обработки ошибок и улучшения каждого проекта
При этом всегда важно помнить, что не существует единственно правильного способа решить ту или иную проблему
Классы данных (Python 3.7+)
Python 3 представляет классы данных, которые не имеют большого количества ограничений и могут быть использованы для сокращения стандартного кода, так как декоратор автоматически генерирует специальные методы, такие как и . Из официального заявления, они описываются как “изменяемые названные кортежи со значениями по умолчанию”.
Python
class Armor:
def __init__(self, armor: float, description: str, level: int = 1):
self.armor = armor
self.level = level
self.description = description
def power(self) -> float:
return self.armor * self.level
armor = Armor(5.2, «Common armor.», 2)
armor.power()
# 10.4
print(armor)
# <__main__.Armor object at 0x7fc4800e2cf8>
1 |
classArmor def__init__(self,armorfloat,descriptionstr,levelint=1) self.armor=armor self.level=level self.description=description defpower(self)->float returnself.armor*self.level armor=Armor(5.2,»Common armor.»,2) armor.power() # 10.4 print(armor) # <__main__.Armor object at 0x7fc4800e2cf8> |
Та же реализация класса при помощи классов данных.
Python
from dataclasses import dataclass
@dataclass
class Armor:
armor: float
description: str
level: int = 1
def power(self) -> float:
return self.armor * self.level
armor = Armor(5.2, «Common armor.», 2)
armor.power()
# 10.4
print(armor)
# Armor(armor=5.2, description=’Common armor.’, level=2)
1 |
fromdataclasses importdataclass @dataclass classArmor armorfloat descriptionstr levelint=1 defpower(self)->float returnself.armor*self.level armor=Armor(5.2,»Common armor.»,2) armor.power() # 10.4 print(armor) # Armor(armor=5.2, description=’Common armor.’, level=2) |
Подсказки типов | Ожидание типа | Type hinting (Python 3.5+)
Спор о том, какое лучше — статическое или динамическое — не умолкают и по сей день и у каждого есть свое мнение на этот счет. Это личное дело читателя — когда ему нужно вписывать типы, но мне кажется что вы как минимум должны знать о том, что Python 3 поддерживает .
Python
def sentence_has_animal(sentence: str) -> bool:
return «animal» in sentence
print(sentence_has_animal(«У Ивана есть своя собственная Bitcoin ферма»)) # True
1 |
defsentence_has_animal(sentencestr)->bool return»animal»insentence print(sentence_has_animal(«У Ивана есть своя собственная Bitcoin ферма»))# True |
Написание калькулятора на Python
Сделать простой калькулятор в Python для выполнения основных математических операций, таких как сложение, вычитание, умножение и деление двух чисел, введенных пользователем. Чтобы сделать калькулятор на python, сначала предоставьте 5 вариантов пользователю, пятый вариант для выхода. После предоставления всех пяти опций пользователю, попросите пользователя ввести его / ее выбор и выполнить желаемую операцию, как показано в программе, приведенной ниже.
Код программирования Python для создания калькулятора
Следующая программа на Python предоставляет пользователю опции и просит ввести его / ее выбор для выполнения и показать желаемый результат в качестве вывода:
# Программа Python — создайте простой калькулятор
# Python Program - Make Simple Calculator print("1. Addition"); print("2. Subtraction"); print("3. Multiplication"); print("4. Division"); print("5. Exit"); choice = int(input("Enter your choice: ")); if (choice>=1 and choice<=4): print("Enter two numbers: "); num1 = int(input()); num2 = int(input()); if choice == 1: res = num1 + num2; print("Result = ", res); elif choice == 2: res = num1 - num2; print("Result = ", res); elif choice == 3: res = num1 * num2; print("Result = ", res); else: res = num1 / num2; print("Result = ", res); elif choice == 5: exit(); else: print("Wrong input..!!");
Вот несколько примеров запуска вышеприведенной программы на Python, чтобы показать, как сделать простой калькулятор.
Это начальный вывод, дающий пользователям некоторое количество вариантов (5 вариантов), чтобы выбрать любой из этих 5 вариантов.
Теперь давайте сначала попробуем выполнить задачу сложения, выбрав или введя 1 в качестве ввода, а затем введите любые два числа, скажем 1 и 2, а затем нажмите клавишу ввода, чтобы проверить это:
Теперь давайте снова запустим программу калькулятора, чтобы проверить это время на вычитание двух чисел, скажем, 2 и 1, как показано в следующем примере:
Снова повторно запустите ту же программу, и на этот раз предоставьте 4 в качестве ввода для проверки задачи деления и введите два числа, то есть первое число как 20 и второе число как 3, затем нажмите клавишу ввода, как показано здесь в следующем примере выполнения:
Вот та же самая программа, написанная и работающая на оболочке Python. Это первый снимок:
Ниже приведен второй снимок:
Вот третий снимок:
Интересные записи:
Умножение и деление
Операции умножения и деления, как сложение и вычитание, выполняются в Python так же, как в обычной математике. Для умножения Python использует *, для деления — /.
Например:
При делении в Python 3 частное всегда возвращается в виде числа с плавающей точкой, даже если вы делите целые числа:
Это одно из главных различий между Python 2 и Python 3. Python 3 возвращает дробный результат, потому при делении 11 на 2 вы получите 5.5. В Python 2 деление привязано к типам данных, потому при делении целого числа невозможно получить число с плавающей точкой; поэтому при делении 11 на 2 Python 2 возвращает 5.
Когда числа по обе стороны символа деления являются целыми, выполняется деление floor, то есть, для фактора х Python 2 возвращает наибольшее целое число меньше или равное х. К примеру, при делении 5 / 2 таким числом будет 2.
Чтобы выполнить деление floor и получить только целую часть числа, Python 3 использует оператор //. К примеру, разделив 100//40, вы получите 2.
Создать-программу калькулятор в консоли на Java
Для создания простого калькулятора в Java Programming, который выполняет четыре основных математических операции: сложение, вычитание, умножение и деление, используйте регистр переключения, чтобы определить оператор ввода для выполнения необходимых вычислений, а затем отобразить результат на экране, как показано на следующая программа.
Программный код Java для вычисления
Ниже приводится простая Java-программа, которая представляет собой программу на основе меню, основанную на простых вычислениях, таких как сложение, вычитание, умножение и деление по выбору пользователя:
/ * Пример Java-программы - Make Calculator * / /* Java Program Example - Make Calculator */ import java.util.Scanner; public class JavaProgram { public static void main(String args[]) { float a, b, res; char choice, ch; Scanner scan = new Scanner(System.in); do { System.out.print("1. Addition\n"); System.out.print("2. Subtraction\n"); System.out.print("3. Multiplication\n"); System.out.print("4. Division\n"); System.out.print("5. Exit\n\n"); System.out.print("Enter Your Choice : "); choice = scan.next().charAt(0); switch(choice) { case '1' : System.out.print("Enter Two Number : "); a = scan.nextFloat(); b = scan.nextFloat(); res = a + b; System.out.print("Result = " + res); break; case '2' : System.out.print("Enter Two Number : "); a = scan.nextFloat(); b = scan.nextFloat(); res = a - b; System.out.print("Result = " + res); break; case '3' : System.out.print("Enter Two Number : "); a = scan.nextFloat(); b = scan.nextFloat(); res = a * b; System.out.print("Result = " + res); break; case '4' : System.out.print("Enter Two Number : "); a = scan.nextFloat(); b = scan.nextFloat(); res = a / b; System.out.print("Result = " + res); break; case '5' : System.exit(0); break; default : System.out.print("Wrong Choice!!!"); break; } System.out.print("\n---------------------------------------\n"); }while(choice != 5); } }
Когда вышеуказанная Java-программа компилируется и выполняется, она выдаст следующий вывод:
3: Добавление условного оператора
Добавьте в начало программы calculator.py небольшое описание с перечнем доступных операций. Выбрав один из операторов, пользователь сообщит программе, что именно ей нужно будет делать.
Примечание: На самом деле здесь можно использовать любые символы (например, 1 для сложения, b для вычитания и так далее).
Передайте строку внутри функции input() и присвойте переменную значению ввода (к примеру, это будет переменная operation).
В эту строку пользователь может ввести любой из предложенных символов, но ничего не произойдёт. Чтобы программа работала, нужно добавить условный оператор. Оператор if будет отвечать за сложение, три оператора elif – за остальные операции; оператор else будет возвращать ошибку, если вместо предложенных операторов пользователь ввёл другой символ.
Итак, сначала программа предлагает пользователю ввести символ операции. Затем она запрашивает два числа. После этого она отображает пользовательский ввод и результат вычислений. Например, пользователь вводит *, затем 58 и 40.
Если же на первый запрос программы пользователь введёт символ %, он получит ошибку.
На данный момент программа выполняет все необходимые вычисления. Однако чтобы выполнить другую операцию, программу придётся перезапустить.
Действия
Чтобы кнопки делали что-либо, нам нужно связать их с определенными обработчиками. Определенные связи показаны сначала внизу, затем подробно описанные обработчики.
Сначала мы подключаем цифровые кнопки к своим обработчикам. В Qt Designer мы назвали все кнопки, используя стандартный формат, так, в pushButton_nX литера Х является числом. Это упрощает их итерацию и подключение.
Мы используем оберточную функцию на сигнале для передачи дополнительной информации с каждым запуском. В нашем случае, введенное число от 0 до 9 используя функцию range.
Python
for n in range(0, 10):
getattr(self, ‘pushButton_n%s’ % n).pressed.connect(lambda v=n: self.input_number(v))
1 |
forninrange(,10) getattr(self,’pushButton_n%s’%n).pressed.connect(lambdav=nself.input_number(v)) |
Следующий блок сигналов, который мы подключим, нужен для стандартных операций подсчетов, включая суммирование, умножение, вычитание и деление. Опять же, они подключены к общему слоту и состоят из завернутого сигнала для передачи операции (определенный тип операторов Python).
Python
self.pushButton_add.pressed.connect(lambda: self.operation(operator.add))
self.pushButton_sub.pressed.connect(lambda: self.operation(operator.sub))
self.pushButton_mul.pressed.connect(lambda: self.operation(operator.mul))
self.pushButton_div.pressed.connect(lambda: self.operation(operator.truediv)) # operator.div для Python2.7
1 |
self.pushButton_add.pressed.connect(lambdaself.operation(operator.add)) self.pushButton_sub.pressed.connect(lambdaself.operation(operator.sub)) self.pushButton_mul.pressed.connect(lambdaself.operation(operator.mul)) self.pushButton_div.pressed.connect(lambdaself.operation(operator.truediv))# operator.div для Python2.7 |
В дополнении к числам и операторам, у нас есть ряд пользовательских функций для подключения. К примеру, проценты (для преобразования введенного ранее числа для получения процента), знак равно, сброс и память.
Python
self.pushButton_pc.pressed.connect(self.operation_pc)
self.pushButton_eq.pressed.connect(self.equals)
self.pushButton_ac.pressed.connect(self.reset)
self.pushButton_m.pressed.connect(self.memory_store)
self.pushButton_mr.pressed.connect(self.memory_recall)
1 |
self.pushButton_pc.pressed.connect(self.operation_pc) self.pushButton_eq.pressed.connect(self.equals) self.pushButton_ac.pressed.connect(self.reset) self.pushButton_m.pressed.connect(self.memory_store) self.pushButton_mr.pressed.connect(self.memory_recall) |
Теперь кнопки и действия связаны, и мы можем реализовать логику в методах слота для обработки этих действий.
Часть четвертая: необязательная
Можно добавить немного удобства для нашей программы. Проблема в том, что каждый раз вводя новые значения нам приходится удалять старые, что не очень комфортно. Напишем функцию, которая будет очищать поле для ввода после клика по нему.
def clear(event): """ Clears entry form """ caller = event.widget caller.delete("0", "end")
Таким образом мы очищаем виджет, вызвавший данную функцию. Чтобы все работало, добавьте следующие строки после создания виджетов, но до размещения. Например, после строки a = Entry(… , но до строки a.grid(…
a.bind("<FocusIn>", clear) b.bind("<FocusIn>", clear) c.bind("<FocusIn>", clear)
Готово. Программа работает, Вы великолепны!
Исходный код калькулятора квадратных уравнений с GUI на GitHub
View the discussion thread.
4: Определение функций
Чтобы программу не пришлось перезапускать после каждого обработанного примера, нужно определить несколько функций. Для начала поместим весь существующий код в функцию calculate() и добавим в программу ещё один слой. Чтобы программа запускалась, нужно добавить функцию в конец файла.
Создайте ещё одну функцию, состоящую из условных операторов. Этот блок кода позволит пользователю выбрать: продолжить работу с программой или завершить её. В данном случае операторов будет три: один if, один elif и один else для обработки ошибок.
Пусть функция называется again(). Добавьте её в конец блока def calculate():
Также можно устранить чувствительность к регистру: буквы y и n должны восприниматься так же, как Y и N. Для этого добавьте функцию строки str.upper():
Теперь нужно добавить функцию again() в конец функции calculate(), чтобы программа запускала код, который спрашивает пользователя, хочет ли он продолжить работу.
Запустите программу в терминале с помощью команды:
Теперь программу не нужно перезапускать.
Память
Наконец, мы можем определить обработчики для действий памяти. Для «Calculon» мы подобрали только два действия с памятью – хранение и повторный вызов. Хранение берет текущее значение с LCD дисплея и копирует его в self.memory. Повторный вызов берет значение из self.memory и помещает его в конечное место нашего стека.
Python
def memory_store(self):
self.memory = self.lcdNumber.value()
def memory_recall(self):
self.state = INPUT
self.stack = self.memory
self.display()
1 |
defmemory_store(self) self.memory=self.lcdNumber.value() defmemory_recall(self) self.state=INPUT self.stack-1=self.memory self.display() |
Настроив режим на INPUT и обновив дисплей мы сможем действовать также, как при введении чисел от руки.
О сервисе Python Fiddle
Это отличный вариант для тех, кто к своим уже имеющимся познаниям в программировании желает добавить умение пользоваться немалыми возможностями Пайтона. Многих здесь радует поддержка внешних библиотек.
С левой стороны на странице ресурса имеется «волшебная» боковая панель, благодаря сверхполезным и любопытным подсказкам которой, работа превращается в увлекательное занятие. Результаты запущенного своего кода в режиме онлайн можно будет лицезреть внизу страницы.
Если надо кого-то ознакомить со своим программистским творчеством, это здесь легко осуществить – иногда требуется показать свою программу наставнику или коллегам для того, чтобы узнать их мнение.
http://pythonfiddle.com/
Перечисления enum (Python 3.4+)
Python 3 поддерживает простой способ написания перечислений через класс Enum. Этот класс можно назвать удобным способом инкапсуляции списка констант, чтобы они не были разбросаны по всему коду без структуры.
Python
from enum import Enum, auto
class Monster(Enum):
ZOMBIE = auto()
WARRIOR = auto()
BEAR = auto()
print(Monster.ZOMBIE) # Monster.ZOMBIE
1 |
fromenum importEnum,auto classMonster(Enum) ZOMBIE=auto() WARRIOR=auto() BEAR=auto() print(Monster.ZOMBIE)# Monster.ZOMBIE |
Python
for monster in Monster:
print(monster)
# Monster.ZOMBIE
# Monster.WARRIOR
# Monster.BEAR
1 |
formonster inMonster print(monster) |
Сложение и вычитание
Операции сложения и вычитания в Python выполняются точно так же, как и в обычной математике. Вы даже можете использовать Python вместо калькулятора.
Например:
Также вы можете объявить переменные и указать их в функции print:
Целые числа бывают положительными и отрицательными. Попробуйте сложить следующие числа:
Числа с плавающей точкой складываются аналогичным образом:
В результате сложения чисел с плавающей точкой также получается число с плавающей точкой, потому Python выводит 8.0, а не 8.
Синтаксис вычитания отличается от сложения только оператором. Попробуйте отнять 32 из 75.67:
Примечание: Если в операции присутствует хотя бы одно число с плавающей точкой, в результате Python также выведет число с плавающей точкой.
Часть вторая: создаем GUI для программы
Для простоты будем создавать GUI встроенными средствами Python, поэтому импортируем все из библиотеки Tkinter:
from Tkinter import *
В Python версии 3.х название модуля следует писать с маленькой буквы — tkinter.
Далее создаем само окно и размещаем на нем необходимые виджеты:
# родительский элемент root = Tk() # устанавливаем название окна root.title("Quadratic calculator") # устанавливаем минимальный размер окна root.minsize(325,230) # выключаем возможность изменять окно root.resizable(width=False, height=False) # создаем рабочую область frame = Frame(root) frame.grid() # поле для ввода первого аргумента уравнения (a) a = Entry(frame, width=3) a.grid(row=1,column=1,padx=(10,0)) # текст после первого аргумента a_lab = Label(frame, text="x**2+").grid(row=1,column=2) # поле для ввода второго аргумента уравнения (b) b = Entry(frame, width=3) b.grid(row=1,column=3) # текст после второго аргумента b_lab = Label(frame, text="x+").grid(row=1, column=4) # поле для ввода третьего аргумента уравнения (с) c = Entry(frame, width=3) c.grid(row=1, column=5) # текст после третьего аргумента c_lab = Label(frame, text="= 0").grid(row=1, column=6) # кнопка решить but = Button(frame, text="Solve").grid(row=1, column=7, padx=(10,0)) # место для вывода решения уравнения output = Text(frame, bg="lightblue", font="Arial 12", width=35, height=10) output.grid(row=2, columnspan=8) # запускаем главное окно root.mainloop()
Если вы в точности повторили указанный код, то после запуска скрипта у вас получится примерно следующее окно:
Отлично, программа работает. Осталось объяснить Python как связать эти две части.
Операторы Python
Оператор – это символ или функция, которая выполняет то или иное действие над данными. К примеру, символ + — это оператор сложения.
В Python присутствуют как общие, так и специальные математические операторы.
Ниже приведена таблица наиболее распространённых математических операторов Python.
Операция | Результат |
x + y | Сложение (сумма x и y) |
x — y | Вычитание (разница между x и y) |
-x | Смена знака x |
+x | Тождественность x |
x * y | Умножение x на y |
x / y | Деление x на y |
x // y | Получение целой части от деления x на y |
x % y | Остаток от деления x / y |
x ** y | Возведение в степень |
Также руководство охватывает использование операторов присваивания.
Состояние
Флажок состояние (state) нужен для переключения между готовыми и введенными состояниями. Это также влияет на поведение при вводе чисел. В режиме готовности, введенное значение настраивается напрямую под стек и текущую позицию. В режиме ввода, указанном выше, используется логика shift+add.
Это необходимо, так что мы можем вводить числа над результатом подсчета, вместо того, чтобы получить новые добавленные в результаты предыдущего подсчета числа.
Python
def input_number(self, v):
if self.state == READY:
self.state = INPUT
self.stack = v
else:
self.stack = self.stack * 10 + v
self.display()
1 |
definput_number(self,v) ifself.state==READY self.state=INPUT self.stack-1=v else self.stack-1=self.stack-1*10+v self.display() |
Вы увидите переключатели между состояниями READY и INPUT.