Рассмотрим основы синтаксиса Python.
Python - язык сверхвысокого уровня.
Простейший способ освоить - изучать по сайту pythontutor.ru и по образовательному порталу.
Также неплох https://webhamster.ru/mytetrashare/index/mtb0/1356638609ap4826heul и самоучитель.
Можно прорешать курс МФТИ по Python (список полезных сайтов отттуда). Или материал ВШЭ.
Сайт для изучения программирования с основ http://www.tryobj.com/oprog/ - там есть и другие языки.
Справочник по языку Python с примерами. 10 ценных советов для начинающих.
Есть отличная шпаргалка на русском языке. Подборка материалов из соцсети "в контакте". Для математиков.
Книги о Python https://pythonworld.ru/bookshop . Описание базовых модулей https://pythonworld.ru/moduli .
Лучшие IDE для Python https://python-scripts.com/ide-for-python . Python на Хабре.
Статьи для новичков основы за 10 минут, be pythonic , "советы, уловки, хаки" , часть 2, часть 3, часть 4.
Автоматизация рутинных задач с помощью Python: практическое руководство для начинающих (2016).
Python для моделирования физических процессов: учебное пособие.
Библиотека для квантовых вычислений Qutip. http://qutip.org/ . Установить Qutip:
conda install -c conda-forge qutip
В данном примере производится моделирование системы из N = 10 спинов с помощью стандартного предиктора для
ОДУ. Взаимодействие описывается для системы N-1 спинов. Можно изменить скорость изменения спинов и иные
параметры. Например, можно использовать численное моделирование Монте -Карло (строка закомментирована в коде).
Система описывается гамильтонианом, показанным на первом рисунке. В начальном состоянии один спин имеет
состояние |1>, остальные |0>.
1. Ввод-вывод: input() и print()
input- выводит строку, можно преобразовывать типы:
a = int(input()) - пример приведения к типу целых чисел.
b = str(123) - пример преобразования числа 123 в строку '123'.
bool(x) - преобразование к типу bool, использующая стандартную процедуру проверки истинности.
Если х является ложным или опущен, возвращает значение False, в противном случае она возвращает True.
bytearray([источник [, кодировка [ошибки]]]) - преобразование к bytearray. Bytearray - изменяемая
последовательность целых чисел в диапазоне 0≤X<256. Вызванная без аргументов, возвращает пустой массив байт.
bytes([источник [, кодировка [ошибки]]]) - возвращает объект типа bytes, который является неизменяемой
последовательностью целых чисел в диапазоне 0≤X<256. Аналогичен bytearray().
dict([object]) - преобразование к словарю.
float([X]) - преобразование к числу с плавающей точкой. Если аргумент не указан, возвращается 0.0.
Bytearray - это байтовая строка. От аналогичного типа bytes отличается только тем, что является изменяемой.
ord() - возвращает значение байта.
chr() - конвертирует число в символ.
tuple() - преобразует в кортеж любой итерируемый тип данных.
list() - преобразует в список любой итерируемый тип данных.
set() - преобразует в множество любой итерируемый тип данных. Множества, в отличие от списков или
кортежей, не могут содержать дублей.
":".join(['toto','12','pswd']). Получаем: 'toto:12:pswd' . То есть
<соединяющая строка>.join(строки)"1,4,8,2".split(","). Итог ['1','4','8','2']. Т.е. <строка>.split(строка-разделитель).
Определить тип объекта можно с помощью функции type().
Больше встроенных функций здесь.
print - выводит строкой любой набор данных, можно перечислять через запятую. Имеет два параметра:
sep - разделитель. По умолчанию пробел. Пример: print(a,b,c, sep='') - убрали разделитель.
end - что выводится после вывода всех значений. По умолчанию перенос на новую строку '\n'.
2. Базовые операции:
Операция................ Название
lambda .................... .лямбда-выражение
or.............................. .логическое ИЛИ
and........................... .логическое И
not x......................... .логическое НЕ
in, not in.................... проверка принадлежности
is, is not.................... проверка идентичности
<,<=,>,>=,!=,==........ .сравнения
|................................ .побитовое ИЛИ
^................................ побитовое исключающее ИЛИ
&............................... побитовое И
<<, >>....................... побитовые сдвиги
+, - ............................сложение и вычитание
*, /,//, % .....................множение, деление, деление нацело, остаток
+x, -x..........................унарный плюс и смена знака
~x...............................побитовое НЕ
**................................возведение в степень
+=,-=,*=,/=..................инкремент, декремент, умножение на число, деление на число
x.атрибут...................ссылка на атрибут
x[индекс]....................взятие элемента по индексу
x[от:до].......................выделение среза (от и до)
f(аргумент,...).............вызов функции
( ... )............................скобки или кортеж
[ ... ]............................список или списковое включение
{кл:зн, ...}...................словарь пар ключ-значение
`выражения`.............. преобразование к строке (repr)
Общие правила определения приоритетов операций такие:
Приоритет операторовподробнее (выше в таблице более приоритетные):
| ** | Возведение в степень |
| ~ + - | Комплиментарный оператор |
| * / % // | Умножение, деление, деление по модулю, целочисленное деление. |
| + - | Сложение и вычитание. |
| >> << | Побитовый сдвиг вправо и побитовый сдвиг влево. |
| & | Бинарный "И". |
| ^ | | Бинарный "Исключительное ИЛИ" и бинарный "ИЛИ" |
| <= < > >= | Операторы сравнения |
| <> == != | Операторы равенства |
| = %= /= //= -= += *= **= | Операторы присваивания |
| is is not | Тождественные операторы |
| in not in | Операторы членства |
| not or and | Логические операторы |
Основные операции над строками:
A + B — конкатенация;
A * n — повторение n раз, значение n должно быть целого типа.
3. Условные контрукции и последовательности команд.
Python позволяет писать программы в виде линейной последовательности команд, следующих одна за другой. Такие
команды могут отделять друг от друга либо переносом на следующую строчку, либо с помощью точки с запятой ;.
Простейший пример нелинейной последовательности команд - условные конструкции. В Python они реализованы с помощью
операторов if, else , elif. Условные конструкции можно также вкладывать друг в друга, эти операторы возвращают значение
специального типа bool, переменные которого могут принимать только два значения: true и false. При преобразовании значения
этого типа в целое число получается соответственно 1 и 0, в строку - true и false. При обратном преобразовании любое целое
ненулевое число или непустая строка преобразуется в true, а пустая строка или ноль - в false.
Операторы сравнения: <=, >=, ==, >, <, != (не равно).
Логические операторы: and, or, not.
Примеры использования условных конструкций:
1) простое ветвление if...else:
if x > 0:
if y > 0: # x > 0, y > 0
print("Первая четверть")
else: # x > 0, y < 0
print("Четвертая четверть")
else:
if y > 0: # x < 0, y > 0
print("Вторая четверть")
else: # x < 0, y < 0
print("Третья четверть")
2) каскадные условные конструкции if...elif...else
if x > 0 and y > 0:
print("Первая четверть")
elif x > 0 and y < 0:
print("Четвертая четверть")
elif y > 0:
print("Вторая четверть")
else:
print("Третья четверть")
Обработка исключений - общая схема:
try:
блок кода (где может возникнуть исключение)
except:
блок кода (который выполниться, если оно возникнет)
else: (Если таковой необходим в конструкции)
блок кода (выполнится, если исключение не возникло)
finally:
блок кода (выполнится в любом случае)
Нередко применяется упрощённая конструкция try-except. Пример:
try:
x1,y1,x2,y2 = int(input()),int(input()),int(input()),int(input())
print('ввод произошёл правильно')
except:
print('ошибка ввода')
Код на Python может быть организован следующим образом:
Отдельные файлы-модули с кодом на Python могут объединяться в пакеты модулей. Пакет это директория
(папка), содержащая несколько отдельных файлов-скриптов. Например, имеем следующую структуру:
|_ my_file.py
|_ my_package
|_ __init__.py
|_ inside_file.py
В файле inside_file.py определена некая функция foo. Тогда чтобы получить доступ к функции foo, в файле
my_file следует выполнить следующий код: from my_package.inside_file import foo
4. Вычисления и библиотека math.
Модуль math – один из наиважнейших в Python. Этот модуль предоставляет обширный функционал для работы с
числами. Команда import позволяет использовать любой питоновский файл как модуль в другом файле. Синтаксис:
import module_1[, module_2[,... module_N]
Команда from ... import позволяет вам импортировать не весь модуль целиком, а только определенное его
содержимое. Например, выражение не импортирует весь модуль, только предоставляет доступ к конкретным
объектам, которые мы указали.
В Pythom так же возможно импортировать всё (переменные, функции, классы) за раз из модуля, для этого
используется конструкция from ... import*. Для того, чтобы получить список всех установленных модулей, достаточно
выполнить: help("modules")
Чтобы создать свой модуль в Python, достаточно сохранить ваш скрипт с расширением .py. Теперь он доступен.
Встроенная функция dir() возвращает отсортированный список строк, содержащих все имена, определённые в модуле.
math.ceil(X) - округление до ближайшего большего числа.
math.copysign(X, Y) - возвращает число, имеющее модуль такой же, как и у числа X, а знак - как у числа Y.
math.fabs(X) - модуль X.
math.factorial(X) - факториал числа X.
math.floor(X) - округление вниз.
math.fmod(X, Y) - остаток от деления X на Y.
math.frexp(X) - возвращает мантиссу и экспоненту числа.
math.ldexp(X, I) - X * 2i. Функция, обратная функции math.frexp().
math.fsum(последовательность) - сумма всех членов последовательности. Эквивалент встроенной функции sum(),
но math.fsum() более точна для чисел с плавающей точкой.
math.isfinite(X) - является ли X числом.
math.isinf(X) - является ли X бесконечностью.
math.isnan(X) - является ли X NaN (Not a Number - не число).
math.modf(X) - возвращает дробную и целую часть числа X. Оба числа имеют тот же знак, что и X.
math.trunc(X) - усекает значение X до целого.
math.exp(X) - eX.
math.expm1(X) - eX - 1. При X → 0 точнее, чем math.exp(X)-1.
math.log(X, [base]) - логарифм X по основанию base. Если base не указан, вычисляется натуральный логарифм.
math.log1p(X) - натуральный логарифм (1 + X). При X → 0 точнее, чем math.log(1+X).
math.log10(X) - логарифм X по основанию 10.
math.log2(X) - логарифм X по основанию 2.
math.pow(X, Y) - XY.
math.sqrt(X) - квадратный корень из X.
math.acos(X) - арккосинус X. В радианах.
math.asin(X) - арксинус X. В радианах.
math.atan(X) - арктангенс X. В радианах.
math.atan2(Y, X) - арктангенс Y/X. В радианах. С учетом четверти, в которой находится точка (X, Y).
math.cos(X) - косинус X (X указывается в радианах).
math.sin(X) - синус X (X указывается в радианах).
math.tan(X) - тангенс X (X указывается в радианах).
math.hypot(X, Y) - вычисляет гипотенузу треугольника с катетами X и Y (math.sqrt(x * x + y * y)).
math.degrees(X) - конвертирует радианы в градусы.
math.radians(X) - конвертирует градусы в радианы.
math.cosh(X) - вычисляет гиперболический косинус.
math.sinh(X) - вычисляет гиперболический синус.
math.tanh(X) - вычисляет гиперболический тангенс.
math.acosh(X) - вычисляет обратный гиперболический косинус.
math.asinh(X) - вычисляет обратный гиперболический синус.
math.atanh(X) - вычисляет обратный гиперболический тангенс.
math.erf(X) - функция ошибок.
math.erfc(X) - дополнительная функция ошибок (1 - math.erf(X)).
math.gamma(X) - гамма-функция X.
math.lgamma(X) - натуральный логарифм гамма-функции X.
math.pi - pi = 3,1415926...
math.e - e = 2,718281...

