Python 3.6 - начало работы и краткая справка. 

       Рассмотрим основы синтаксиса 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-pythonPython на Хабре

 

    Статьи для новичков основы за 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)

           

Общие правила определения приоритетов операций такие:

  1. Выполняются возведения в степень справа налево, то есть 3 ** 3 ** 3 это 3^(3^3) = 3^27.
  2. Выполняются унарные минусы (отрицания).
  3. Выполняются умножения и деления слева направо. Операции умножения и деления имеют одинаковый приоритет.
  4. Выполняются сложения и вычитания слева направо. Операции сложения и вычитания имеют одинаковый приоритет.

      Приоритет операторовподробнее (выше в таблице более приоритетные):

 

**Возведение в степень
~ + -Комплиментарный оператор
* / % //Умножение, деление, деление по модулю, целочисленное деление.
+ -Сложение и вычитание.
>> <<Побитовый сдвиг вправо и побитовый сдвиг влево.
&Бинарный "И".
^ |Бинарный  "Исключительное ИЛИ" и бинарный "ИЛИ"
<= < > >=Операторы сравнения
<> == !=Операторы равенства
= %= /= //= -= += *= **=Операторы присваивания
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 может быть организован следующим образом:

 

  1. Первый уровень это обычные команды на Python.
  2. Команды на Python могут быть собраны в функции.
  3. Функции могут быть частью класса.
  4. Классы могут быть определены внутри модулей.
  5. Наконец, модули могут составляться в пакеты модулей

      Отдельные файлы-модули с кодом на 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...