Язык Python

 Официальный сайт

Python For Beginners | Python.org

BeginnersGuide/Programmers - Python Wiki

BeginnersGuide/Overview - Python Wiki

 

BeginnersGuide/NonProgrammers - Python Wiki

 

 Книга Automate the Boring Stuff with Python книга

 

Питон3 для начинающих самоучитель

 https://pythonworld.ru/samouchitel-python

https://pythonworld.ru


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


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


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


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


 

 

Обзор языка

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

 

 

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

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

 

 

Обзор Питона 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…



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

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

 

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

Пишут в тч:

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

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

 

 ----------------------

 

 

Питон см

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

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/

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

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:

$ ? `



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

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:



Питон с начала см

https://codechick.io/

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

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



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

https://codechick.io/tutorials

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

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

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



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

https://codechick.io/tutorials/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

 



Отступы

Большинство языков программирования, таких как 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 можно использовать многострочные комментарии. Один из способов — использовать символ решетки (#) в начале каждой строки. Например:

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

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

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

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



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

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

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

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

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

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

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

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

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

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

Вывод:

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




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

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



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



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



Примечание. На самом деле мы не присваиваем значения переменным. Вместо этого 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)
{'а' : 'арбуз', 'б' : 'баран', 'в' : 'ворон'}

{'а', 'е', 'и' , 'о', 'у', 'ы', 'э', 'ю', 'я' }

 

РСА

Вот битая ссылка Подробнее о литералах-коллекциях. - по ней нет ничего про литералы-коллекции



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

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

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

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

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

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





Вот про литералы

https://www.bestprog.net/ru/2019/10/02/python-literals-creation-generation-of-an-object-of-some-type-basic-types-of-objects-ru/

Причем пишут, что значения литералов МОЖНО изменять.

Главное — нельзя изменять тип созданных переменных в процессе работы.



Типы данных в Питоне

К этому классу относятся: целые, комплексные и числа с плавающей точкой. Определены они в 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 усекается.



Смотри — список, кортеж, множество

Объект

 

 

Вопрос

Список

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

элементы списка могут быть разных типов;

можно получить значение элемента по номеру, начиная с 0

можно изменить значение элемента по номеру

а можно в список добавлять значения; удалять значения (чтобы элементы сдвигались)?

как в списке значений 1С?

 

Кортеж

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

аналогично списку, но значения нельзя изменять

 

Словарь

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

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

 

Множество

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

элементы не упорядочены;

значения уникальны;

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

 



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

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

https://codechick.io/tutorials/python/variables-datatypes



Вот детально

https://codechick.io/tutorials/python/type-conversion-and-casting

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



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

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



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

Оператор

Действие

Пример

+

Сложение двух операндов или унарный плюс

x + y + 2

-

Вычитание правого оператора из левого или унарный минус

x - y- 2

*

Умножение двух операндов

x * y

/

Деление левого операнда на правый (результат всегда типа float)

x / y

%

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

x % y (остаток от x / y)

//

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

x // y

**

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

x**y



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

Оператор

Действие

Пример

>

Больше чем: True, если левый операнд больше правого

x > y

<

Меньше чем: True, если левый операнд меньше правого

x < y

==

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

x == y

!=

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

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