Python заметки (ерунда всякая)

Другие учебные материалы по языку

Описание Python в школьной программе:

учебник Босовой и дополнения на сайте автора;

учебник Поляков и дополнения к учебнику на сайте автора;

Учебные материалы по Python на русском https://codechick.io/tutorials/python

Python3 для начинающих самоучитель  https://pythonworld.ru/samouchitel-python     https://pythonworld.ru

Примеры программ https://pythonworld.ru/primery-programm

там есть понятная мне прога про словарь! Интересно ее разобрать!

Фигня

Курс подготовки к ЕГЕ по информатике
https://foxford.ru/courses/5976/landing?admitad_uid=bf8c18263e659134bb649da582e93e8c&placement=183258&utm_campaign=gen_all_all_common-regular&utm_medium=cpa&utm_source=admitad

Вот решение мутной задачи C4 из ЕГЕ
https://pythonworld.ru/primery-programm/ege2015-diag.html

 

Смотри

Обзор языка

https://tproger.ru/articles/podrobnoe-opisanie-jazyka-python-dlja-nachinajushhih/

 

Лабораторка по Pythonу на сайте МФТИ (шпорка по основам языка)

 http://cs.mipt.ru/algo/lessons/lab2.html#section-3

 

Обзор Python 2 с ХАБРА — статья 2007 года

https://habr.com/ru/post/31180/

 

Смотри комментарии и ссылки

Стандарт для Python – PEP, а в PEP 8 говорится: "Use 4 spaces per indentation level."



 gorinich:

Срезы - это просто конец света list[0:2]. С 0 по 2 элемент не включительно! Это ж надо было такое придумать? Есть аргументы? Приведите их пожалуйста.

C++ standard library относительно итераторов гласит в книге «The C++ Standard Library. A Tutorial and Reference»:

…begin() and end() define a half-open range that includes the first element but excludes the last…



Статьи по Pythonу на хабре

https://habr.com/ru/hub/python/

 

Сайт https://younglinux.info/python/introductionpython

Пишут в тч:

Если интерпретатору Python дать команду import this, то выведется так называемый "Дзен Python", иллюстрирующий идеологию и особенности данного языка.

На сайте можно купить методички, сборник задач по языку Python по цене 60-100 руб.

 

Python см

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

https://ru.wikipedia.org/wiki/Python#%D0%9F%D0%BE%D1%80%D1%82%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D0%BE%D1%81%D1%82%D1%8C

 

Примеры:

if i % 2 != 0
!= - оператор проверки на НЕРАВЕНСТВО, возвращает True или false

https://pythonist.ru/operator-neravenstva-v-python/
на англ https://linuxhint.com/python-not-equal-operator/

Вот все операторы Python – а вот их описание не нахожу!

https://docs.python.org/3/reference/lexical_analysis.html#operators

2.5. Operators

The following tokens are operators:

+ - * ** / // % @

<< >> & | ^ ~ :=

< > <= >= == !=

2.6. Delimiters

The following tokens serve as delimiters in the grammar:

( ) [ ] { }

, : . ; @ = ->

+= -= *= /= //= %= @=

&= |= ^= >>= <<= **=

The period can also occur in floating-point and imaginary literals. A sequence of three periods has a special meaning as an ellipsis literal. The second half of the list, the augmented assignment operators, serve lexically as delimiters, but also perform an operation.

The following printing ASCII characters have special meaning as part of other tokens or are otherwise significant to the lexical analyzer:

' " # \

The following printing ASCII characters are not used in Python. Their occurrence outside string literals and comments is an unconditional error:

$ ? `



Вот курс по Pythonу бесплатный

https://www.codecademy.com/learn/learn-python/modules/learn-python-python-syntax-u-6

Нашел отсюда:

Some sites offer in-browser coding for those who want to learn Python:



Python с начала см

https://codechick.io/

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

Оно бесплатно, но нужна авторизация



Вот все их курсы

https://codechick.io/tutorials

Нам Python, линукс, структуры данных и алгоритмы, и еще мне не нужное

Структуры данных и алгоритмы

Зачем они нужны и как помогают оптимизировать программы



Вот введение в Python

https://codechick.io/tutorials/python



Вот — установка Python. Выполнение команд в командной строке или запуск в интегрированной среде разработки (IDE) IDLE

https://codechick.io/tutorials/python/getting-started-python



Ключевые слова, идентификаторы

https://codechick.io/tutorials/python/keywords-identifier

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

Ключевые слова в Python чувствительны к регистру. Все, кроме True, False и None, пишутся в нижнем регистре.

В версии 3.7. всего 33 ключевых слова, но это число может незначительно меняться с течением времени. Вот их список: 

False

await

else

import

pass

None

break

except

in

raise

True

class

finally

is

return

and

continue

for

lambda

try

as

def

from

nonlocal

while

assert

del

global

not

with

async

elif

if

or

yield

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



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

. В записи идентификаторов можно использовать латинские буквы в нижнем регистре (от a до z), в верхнем регистре (от A до Z), цифры (от 0 до 9) и символ подчеркивания _. Например, допустимыми будут такие идентификаторы: myClass, var_1 и print_this_to_screen.

Идентификатор может быть любой длины.



2. Идентификатор не может начинаться с цифры.

При записи идентификатора нельзя использовать специальные символы, например ! , @ , # , $ , % и т. д.



Python учитывает регистр. Поэтому Variable и variable — две разные переменные.

  • Давайте идентификаторам понятные имена. c = 10 — допустимое имя, но если назвать переменную count = 10, станет гораздо понятнее. Вам самим будет легче понять через время, что вы имели в виду, если вы будете называть переменные понятно.

  • Несколько слов можно разделить знаком подчеркивания: this_is_a_long_variable. Такой метод называется snake_case (змеиный регистр).



Инструкции, отступы и комментарии

https://codechick.io/tutorials/python/statement-indentation-comments

В Python для окончания инструкции используют символ новой строки. Но можно разбить инструкцию на несколько строк символом продолжения строки (\). Например:

a = 1 + 2 + 3 + \     4 + 5 + 6 + \     7 + 8 + 9

Это явное продолжение строки. В Python продолжение строки выполняется внутри круглых ( ), квадратных [ ] и фигурных скобок { }. Например, так мы можем реализовать показанную выше многострочность:

a = (1 + 2 + 3 +     4 + 5 + 6 +     7 + 8 + 9)

Здесь круглые скобки ( ) неявно продолжают строку. То же самое с [ ] и { }. Например:

colors = ['красный',           'голубой',           'зеленый']

Мы также можем поместить несколько выражений в одну строку с помощью точки с запятой, как показано ниже:

a = 1; b = 2; c = 3

 



Отступы в Python - синтаксически значимы!

Большинство языков программирования, таких как C, C ++ и Java, используют фигурные скобки { } для определения блока кода. Однако Python использует отступы.

Блок кода (тело функции, цикла и т. д.) начинается с отступа и заканчивается первой строкой без отступа. Размер отступа зависит от вас, но он должен быть одинаковым на протяжении всего блока.

Как правило, для отступов используют четыре пробела или табуляцию. Вот пример:

for i in range(1,11):     print(i)     if i == 5:         break

Применение отступов в Python делает код аккуратным и чистым. Программы благодаря отступам выглядят последовательными. С ними блоки кода визуально легче отличать друг от друга. 



Сравните:

if True:     print('Привет')     a = 5

и

if True: print('Привет'); a = 5

Оба варианта допустимы и сделают одно и то же, но первый вариант — читабельнее.

Неправильный отступ приведет к ошибке IndentationError.



Комментарии

Комментарии очень важны при написании программы. Они описывают, что происходит внутри программы, чтобы человеку, который читает код, было проще разобраться в нем.

Вы можете забыть детали программы, написанной даже месяц назад. Поэтому всегда полезно уделять время на пояснение основных моментов в комментариях.

В Python для комментариев используется символ решетки (#).

Комментарий заканчивается символом новой строки. Интерпретатор Python игнорирует комментарии.

#Это комментарий #выводим «Привет» print('Привет')



Многострочные комментарии

В Python можно использовать многострочные комментарии. Один из способов — использовать символ решетки (#) в начале каждой строки. Например:

#Это длинный комментарий, #и он продолжается #на несколько строк

Можно поступить иначе — использовать тройные кавычки: ''' или """.

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

"""Это тоже пример прекрасного многострочного комментария"""



Строки документации в Python

Строки документации (docstrings) в Python

Docstring — это сокращение от documentation string (строка документации).

Строки документации в Python — это строковые литералы, которые появляются сразу после определения функции, метода, класса или модуля.

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

def double(num):     """Функция, которая удваивает значение"""     return 2*num

Строки документации появляются сразу после определения функции, класса или модуля. Это и отличает их от многострочных комментариев, написанных с использованием тройных кавычек.

Строка документации связана с объектом как его атрибут __doc__.

Так что мы можем получить доступ к строкам документации функции с помощью следующих строк кода:

def double(num):     """Функция, которая удваивает значение"""     return 2*num print(double.__doc__)

Вывод:

Функция, которая удваивает значение

Переменные, "константы" и литералы в Python

https://codechick.io/tutorials/python/variables-constants-literals

Переменная — это отведенное имя в памяти компьютера для хранения данных, у которого есть имя. Переменные — это контейнеры, в которых хранятся данные, которые можно изменить или использовать позже в программе.

Присваивание значений переменным

Примечание. На самом деле мы не присваиваем значения переменным. Вместо этого Python свящывает переменную и переданное значение с помощью ссылки.

РСА А если сперва присвоить строку, а затем целое число, затем число с плав точкой? Тип переменной меняется или выводится ошибка?

Присваивание значений константе (нет констант в Python, просто переменные обозначают ЗАГЛАВНЫМИ буквами, чтобы для автора кода считать их константами).

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

Внутри модуля константы записываются заглавными буквами.

Если нужно разделить слова, используются подчеркивания. 



Создадим файл constant.py:

PI = 3.14 GRAVITY = 9.8

Теперь создадим файл main.py:

import constant print(constant.PI) print(constant.GRAVITY)

Вывод: 

3,14
9,8

 

Примечание. В Python нет неизменяемых переменных (констант), поэтому на самом деле мы объявляем не константы. Мы просто записываем переменные заглавными буквами, чтобы отличать их от обычных, «изменяемых» переменных. Но это не значит, что переназначить «константу» не получится. 



Про литералы пошла муть! Перехожу в другие источники!

https://codechick.io/tutorials/python/variables-constants-literals

Литерал —  (муть....)

Литералы-коллекции

В Python четыре различных литералов-коллекций: литералы списка, литералы кортежа, литералы словаря и литералы множества.

fruits = ["яблоко", "манго", "апельсин"] #список

numbers = (1, 2, 3) #кортеж

alphabets = {'а' : 'арбуз', 'б' : 'баран', 'в' : 'ворон'} #словарь

vowels = {'а', 'е', 'и' , 'о', 'у', 'ы', 'э', 'ю', 'я' } #множество

print(fruits)

print(numbers)

print(alphabets)

print(vowels)

 

Вывод:

["яблоко", "манго", "апельсин"]
(1, 2, 3)
{'а' : 'арбуз', 'б' : 'баран', 'в' : 'ворон'}
{'а', 'е', 'и' , 'о', 'у', 'ы', 'э', 'ю', 'я' }

 

Википедия про литералы

Из статьи литералы в википедии понятно, что литералы это:

1) это фиксированные значения, которые введены в исходном коде программы.

2) представление значения некоторого типа данных[2]

Хотя в процессе работы инициализированные этими литералами переменные могут получить и другие значения!

"Литералы представляют собой константы, включаемые непосредственно в текст программы.

Литералы могут быть изменены в тексте программы лишь во время редактирования. В отличие от переменных[2], литералы не могут изменяться во время выполнения программы. Настоящие именованные константы тоже не изменяются во время исполнения, но в некоторых языках (например, Delphi) словом const могут быть обозначены и инициализированные до начала выполнения статические переменные, которые затем изменяются в ходе выполнения программы.

В следующем примере , 1 и Кот являются литералами, а number и pet это переменные:

int number = 1;
string pet = "Кот";

 

Типы данных в Python

К этому классу относятся: целые, комплексные и числа с плавающей точкой. Определены они в Python так: int, complex и float соответственно.

С помощью функции type() можно узнать класс, к которому принадлежит переменная. А функция isinstance() проверяет принадлежность объекта к определенному классу.

a = 5 print(a, "относится к типу", type(a)) a = 2.0 print(a, "относится к типу", type(a)) a = 1+2j print(a, "комплексное число?", isinstance(1+2j,complex))

Вывод:

5 относится к типу <class 'int'>
2.0 относится к типу <class 'float'>
(1+2j) комплексное число? True

Целые числа могут быть любой длины — ограничивает их лишь память вашего компьютера.

Число с плавающей точкой имеет точность до 15 знаков после запятой. Целая и десятичная части разделяются точками. 1 — целое число, 1.0 — число с плавающей точкой.

Комплексные числа записываются так: x + yj. Здесь x — действительная часть, а y — мнимая. Несколько примеров: 

>>> a = 1234567890123456789 >>> a 1234567890123456789 >>> b = 0.1234567890123456789 >>> b 0.12345678901234568 >>> c = 1+2j >>> c (1+2j)

Обратите внимание, что float-переменная b усекается.

 

Приведение типов

Для преобразования значений переменных можно использовать следующие функции: int(), float(), str() и т. д. 
https://codechick.io/tutorials/python/variables-datatypes

Вот детально https://codechick.io/tutorials/python/type-conversion-and-casting

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



Инфа по операторам в Python

По англ детальнее, чем рус https://www.tutorialspoint.com/python3/python_basic_operators.htm

По рус https://codechick.io/tutorials/python/operators

Лекция в МФТИ: алгоритмы на Python 3. Лекция №1. Тимофей Хирьянов
https://www.youtube.com/watch?v=KdZ4HF1SrFs

(говорит, что в процессора Интел логика выполнения целоцисленного деления и вычисления остатка от целения кривая (видимо, для отрицательных чисел). Но в Питоне эти операции реализованы нормально с точки зрения математики.

Оператор

Действие

Пример

+, -, *, /

Операторы и так всем понятные  

%

Остаток от деления левого операнда на правый

12%10=2

-12%10=8 (потому что 10*-2+8=-12

//

Деление с округлением — деление, результат которого корректируется в меньшую сторону.  

12//10=1
-12//10=-2 (неожиданно)

**

Показатель степени — левый операнд возводится в значение правого операнда

x**y

 

Операторы сравнения используются для сравнения значений, они возвращают True или False в зависимости от условия.

Оператор

Действие

Пример

>,  <
>=, <=

Понятные операторы сравнения

x > y

==

Равно: True, если операнды равны между собой

x == y

!=

Не равно: True, если операнды не равны между собой

x != y



Операторы and, or, not — логические.

Оператор

Действие

Пример

and

True, если значения обоих операндов True

x and y

or

True, если значение одного из операндов True

x or y

not

True, если значение операнда False (дополняет значение операнда)

not x



Побитовые операторы работают с операндами как со строками из 0 и 1. Они действуют бит за битом, как и говорит название.

Например, 2 в двоичной системе счисления — 10, а 7 — 111.

В таблице ниже: x = 10 (00001010 в двоичной системе счисления) и y = 4 (00000100 в двоичной системе счисления)

Оператор

Действие

Пример

&

Побитовое И

x & y = 0 (00000000)

|

Побитовое ИЛИ

x | y = 14 (00001110)

~

Побитовое НЕ

~x = -11 (11110101)

^

Побитовое XOR

x ^ y = 14 (00001110)

>>

Побитовый сдвиг вправо

x >> 2 = 2 (00000010)

<<

Побитовый сдвиг влево

x << 2 = 40 (00101000)



РСА Зачем они нужны? Для каких задач?



Операторы присваивания используются для назначения переменной некоторого значения. 

a = 5 — простой оператор присваивания, который приравнивает значение 5 справа переменной а слева.

В Python множество составных операторов, подобных a += 5 — он прибавляет 5 к переменной a и позже присваивает ей получившееся значение. Этот оператор равносилен записи a = a + 5.

Оператор

Пример

Эквивалентно

=

x = 5

x = 5

+=

x += 5

x = x + 5

-=

x -= 5

x = x - 5

*=

x *= 5

x = x * 5

/=

x /= 5

x = x / 5

%=

x %= 5

x = x % 5

//=

x //= 5

x = x // 5

**=

x **= 5

x = x ** 5

&=

x &= 5

x = x & 5

|=

x |= 5

x = x | 5

^=

x ^= 5

x = x ^ 5

>>=

x >>= 5

x = x >> 5

<<=

x <<= 5

x = x << 5



is и is notоператоры тождественности в Python. Они проверяют, находятся ли два значения (или две переменные) по одному адресу в памяти. То, что две переменные равны еще не значит, что они идентичны



РСА Примеры не очень понял. Если разным переменным присвоена одинаковое число или строка — то тождественны. Потому вместо присвоения дается ССЫЛКА на значение!

Если два одинаковых списка — то тождества не будет, т. к. списки занимают различные места в памяти. Т.е. там ссылки не передаются, и именно идет "присвоение значения"?



in и not in — операторы принадлежности в Python. Они проверяют, есть ли значение или переменная в последовательности (строке, списке, кортеже, множестве или словаре). Иначе говоря, проверяют вхождение элемента в коллекцию. В словаре можно проверить только присутствие ключа, не значения.



РСА Вот это что? y = {1:'a',2:'b'}



Математические операторы и функции

https://codechick.io/tutorials/python/numbers-and-math-functions



Есть оператор возведения в степень

А есть функция возведения в степень: pow(x, y)

Функция модуля — дает неотрицательное значение;

Остаток от деления на цело



В математическом модуле есть еще ряд полезных математических функций: floor(), exp(), log(), sqrt() и многие другие. Их полный список и количество аргументов, которые они принимают на вход, можно найти на официальном сайте Python в разделе Mathematical Functions



Подробно о функция — далее тут https://codechick.io/tutorials/python/function



Пространство имен и область видимости см

https://codechick.io/tutorials/python/namespace



Например, когда мы присваиваем a = 2, 2 — это объект, хранящийся в памяти, а a — это имя, с которым мы его связываем. Мы можем получить адрес объекта в ОЗУ с помощью встроенной функции id (). Давайте посмотрим, как ей пользоваться. Имя (оно же идентификатор) — это просто название, данное объекту. В Python всё — объекты, а имя — это способ доступа к объекту.





Прыгаю через несколько ступенек — анонимные (лямбда-функции)

https://codechick.io/tutorials/python/anonymous-function