Базовый ввод, вывод и форматирование строки в Python
Чтобы быть полезной, программе обычно необходимо общаться с внешним миром, получая входные данные от пользователя и отображая данные результатов обратно пользователю. Этот урок познакомит вас с вводом и выводом Python.
Ввод может осуществляться непосредственно от пользователя через клавиатуру или из какого-либо внешнего источника, такого как файл или база данных. Вывод может быть отображен непосредственно на консоль или IDE, на экран через графический интерфейс пользователя (GUI) или снова на внешний источник.
В previous tutorial в этой вводной серии вы:
- Увидел сравнение некоторых различных парадигм, используемых языками программирования для реализации определенной итерации
- Узнали об итераторах и итераторах, двух концепциях, которые составляют основу определенной итерации в Python
- Связали все вместе, чтобы узнать о циклах Python для for
*К концу этого урока вы узнаете, как:*
*Возьмите пользовательский ввод с клавиатуры с помощью встроенной функции* `+ input () +` * *Вывод вывода на консоль с помощью встроенной функции* `+ print () +` * *Форматирование строковых данных с помощью оператора* string modulo *
Без лишних слов, давайте окунемся!
py079 Сравнение питонов 2 и 3
*Бесплатный бонус:* ссылка: [Нажмите здесь, чтобы получить шпаргалку Python] и изучить основы Python 3, такие как работа с типами данных, словарями, списками и функциями Python.
Чтение ввода с клавиатуры
Программы часто должны получать данные от пользователя, обычно путем ввода с клавиатуры. Самый простой способ сделать это в Python — с помощью + input () + .
_ Читает строку ввода с клавиатуры. _
+ input () + приостанавливает выполнение программы, чтобы позволить пользователю вводить строку ввода с клавиатуры. Когда пользователь нажимает клавишу [.keys] # Enter #, все набранные символы читаются и возвращаются в виде строки:
>>> s = input() foo bar baz >>> s ‘foo bar baz’
Обратите внимание, что новая строка, сгенерированная, когда пользователь нажимает клавишу [.keys] # Enter #, не включена в возвращаемую строку.
Если вы включите необязательный аргумент + + , + input () + отобразит его как приглашение для пользователя, прежде чем приостановить чтение ввода:
>>> name = input(‘What is your name? ‘) What is your name? Winston Smith >>> name ‘Winston Smith’
+ input () + всегда возвращает строку. Если вам нужен числовой тип, вам нужно преобразовать строку в соответствующий тип с помощью встроенных функций + int () + , + float () + или + complex () + ):
1 >>> n = input(‘Enter a number: ‘) 2 Enter a number: 50 3 >>> print(n + 100) 4 Traceback (most recent call last): 5 File «», line 1, in 6 TypeError: must be str, not int 7 8 >>> n = int(input(‘Enter a number: ‘)) 9 Enter a number: 50 10 >>> print(n + 100) 11 150
В приведенном выше примере выражение + n + 100 + в строке 3 недопустимо, поскольку + n + является строкой, а + 100 + является целым числом. Строка 8 преобразует + n + в целое число, поэтому оператор + print () + в строке 10 завершается успешно.
Оператор вывода print() и его параметры end и sep | Python с Нуля | Урок 3
*Примечание к версии Python:* Если вы обнаружите, что работаете с кодом Python 2.x, вы можете столкнуться с небольшой разницей в функциях ввода между версиями Python 2 и 3.
+ raw_input () + в Python 2 считывает ввод с клавиатуры и возвращает его. + raw_input () + в Python 2 ведет себя так же, как + input () + в Python 3, как описано выше.
Но в Python 2 также есть функция с именем + input () + . В Python 2 + input () + читает ввод с клавиатуры, parses и оценивает его как выражение Python, а затем возвращает полученное значение.
Python 3 не предоставляет единственной функции, которая делает именно то, что Python 2 + input () + делает. Эффект можно имитировать в Python 3 с помощью выражения + eval (input ()) + . Однако это считается угрозой безопасности, поскольку позволяет пользователю запускать произвольный, потенциально вредоносный код.
См. Https://docs.python.org/3/library/functions.html#eval[Python документацию] для получения дополнительной информации о + eval () + и https://en.wikipedia.org/wiki./Eval [Wikipedia + eval + page] для обсуждения потенциальных угроз безопасности.
Запись вывода на консоль
В дополнение к получению данных от пользователя, программа также обычно должна представлять данные обратно пользователю. Вы можете отобразить данные программы на консоли в Python с помощью + print () + .
Неформатированный консольный вывод
Чтобы отобразить объекты на консоли, передайте их как разделенный запятыми список аргументов в + print () + .
_ Отображает строковое представление каждого + + на консоли. _
По умолчанию + print () + отделяет каждый объект одним пробелом и добавляет новую строку в конец вывода:
>>> fname = ‘Winston’ >>> lname = ‘Smith’ >>> print(‘Name:’, fname, lname) Name: Winston Smith
Любой тип объекта может быть указан в качестве аргумента + print () + . Если объект не является строкой, то + print () + преобразует его в соответствующее строковое представление, отображающее его:
>>> a = [1, 2, 3] >>> type(a) >>> b = -12 >>> type(b) >>> d = >>> type(d) >>> type(len) >>> print(a, b, d, len) [1, 2, 3] -12
Как видите, даже сложные типы, такие как списки, словари и функции, могут отображаться на консоли с помощью + print () + .
Ключевое слово Аргументы в + print () +
+ print () + принимает несколько дополнительных аргументов, которые обеспечивают скромный контроль над форматом вывода. Каждый из них представляет собой специальный тип аргумента, называемый ключевое слово аргумента . Эта вводная серия руководств будет включать в себя учебник по функциям и передаче параметров, чтобы вы могли больше узнать об аргументах ключевых слов.
А сейчас вот что вам нужно знать:
- Аргументы ключевых слов имеют вид + = + . *Любые ключевые аргументы, передаваемые в + print () + , должны заканчиваться после списка отображаемых объектов.
В следующих разделах вы увидите, как эти ключевые аргументы влияют на вывод консоли, создаваемый + print () + .
+ Sep = + Аргумент ключевого слова
Добавление ключевого аргумента + sep = + приводит к разделению объектов строкой + + вместо единственного пробела по умолчанию:
>>> print(‘foo’, 42, ‘bar’) foo 42 bar >>> print(‘foo’, 42, ‘bar’, sep=’/’) foo/42/bar >>> print(‘foo’, 42, ‘bar’, sep=’. ‘) foo. 42. bar >>> d = >>> for k, v in d.items(): . print(k, v, sep=’ -> ‘) . foo -> 1 bar -> 2 baz -> 3
Чтобы объединить объекты без пробелов между ними, укажите + sep = » + :
>>> print(‘foo’, 42, ‘bar’, sep=») foo42bar
Вы можете указать любую произвольную строку в качестве разделителя с помощью ключевого слова + sep = + .
+ End = + Аргумент ключевого слова
Ключевое слово аргумент + end = + заставляет вывод завершаться символом + + вместо новой строки по умолчанию:
>>> if True: . print(‘foo’, end=’/’) . print(42, end=’/’) . print(‘bar’) . foo/42/bar
Например, если вы отображаете значения в цикле, вы можете использовать + end = + , чтобы значения отображались в одной строке, а не в отдельных строках:
>>> for n in range(10): . print(n) . 0 1 2 3 4 5 6 7 8 9 >>> for n in range(10): . print(n, end=(‘ ‘ if n < 9 else ‘n’)) . 0 1 2 3 4 5 6 7 8 9
Любая строка может быть указана как выходной терминатор с ключевым словом + end = + .
Аргументы ключевого слова выходного потока
+ print () + принимает два дополнительных ключевых аргумента, оба из которых влияют на обработку выходного потока:
* + flush = True + : *Обычно + print () + буферизует свой вывод и только периодически записывает в выходной поток. + flush = True + указывает, что выходной поток принудительно сбрасывается при каждом + print () + .
Эти два ключевых аргумента представлены здесь для полноты картины. Возможно, вам не нужно слишком беспокоиться о выходных потоках на этом этапе. Они обсуждаются позже в этой серии в руководстве по File I/O.
Форматированный строковый вывод
+ print () + поддерживает форматирование вывода консоли, которое в лучшем случае является элементарным. Вы можете выбрать способ разделения печатных объектов и указать, что идет в конце печатной строки. Это об этом.
Во многих случаях вам потребуется более точный контроль над отображением данных, предназначенных для отображения. Python предоставляет несколько способов форматирования выходных строковых данных. В этом разделе вы узнаете об одном из старых: оператор* string modulo *.
В последних версиях Python появились более новые способы форматирования строковых данных, которые, возможно, превосходят оператор строкового модуля: string + .format () + method и f-strings . Вы узнаете об этом в следующем уроке этой серии. Вы также можете проверить эти статьи:
- Python Советы по форматированию строк и рекомендации
- Python 3’s f-Strings: улучшенный синтаксис форматирования строк (Руководство)
Хотя доступны и другие параметры форматирования, оператор строкового модуля по-прежнему широко используется. Если вы читаете существующий код Python, вы, вероятно, столкнетесь со строковым оператором по модулю, поэтому будет полезно ознакомиться с ним.
*Примечание:* Если вы знакомы с семейством функций https://en.wikipedia.org/wiki/Printf_format_string [`+ printf () +`] из C, Perl или Java, то вы увидите, что они не существуют в Python. Тем не менее, между `+ printf () +` и строковым оператором по модулю есть некоторое сходство, поэтому, если вы знакомы с `+ printf () +`, многие из следующих элементов будут вам знакомы.
С другой стороны, если вы не знакомы с + printf () + , не беспокойтесь! Следующее должно иметь смысл.
Строковый оператор по модулю
Оператор modulo ( +% + ) обычно используется с числами, и в этом случае он вычисляет остаток от деления:
>>> 11 % 3 2
Для строковых операндов оператор по модулю выполняет совершенно другую функцию: форматирование строки. (Эти две операции не очень похожи друг на друга. Они имеют одинаковое имя, потому что они представлены одним и тем же символом: +% + .)
Вот как выглядит синтаксис строкового оператора по модулю:
В левой части оператора +% + , + + — строка, содержащая один или несколько спецификаторов преобразования. + + справа вставляется в + + вместо спецификаторов преобразования. Результирующая форматированная строка является значением выражения.
Давайте начнем с примера. Вот оператор + print () + , который отображает отформатированную строку, используя оператор строки по модулю:
>>> print(‘%d %s cost $%.2f’ % (6, ‘bananas’, 1.74)) 6 bananas cost $1.74
Помимо представления самой строковой операции по модулю, символ + ‘%’ + также обозначает спецификаторы преобразования в строке формата — в этом случае + ‘% d’ + , + ‘% s’ + и + ‘%. 2f’ + .
В выходных данных каждый элемент из набора значений преобразуется в строковое значение и вставляется в строку формата вместо соответствующего спецификатора преобразования:
- Первым элементом в кортеже является + 6 + , числовое значение, которое заменяет + ‘% d’ + в строке формата.
- Следующим элементом является строковое значение + ‘bananas’ + , которое заменяет + ‘% s’ + .
- Последний элемент — это значение с плавающей точкой + 1.74 + , которое заменяет + ‘%. 2f’ + .
В результате получается строка «+6 бананов стоимостью $ 1,74 +», как показано на следующей диаграмме:
Если нужно вставить несколько значений, они должны быть заключены в кортеж, как показано выше. Если есть только одно значение, оно может появиться само по себе:
>>> print(‘Hello, my name is %s.’ % ‘Graham’) Hello, my name is Graham.
Также обратите внимание, что строковая операция по модулю не только для печати. Вы также можете отформатировать значения и присвоить их другой строковой переменной:
>>> s = ‘Hello, my name is %s.’ % ‘Graham’ >>> s ‘Hello, my name is Graham.’
(Опять же, если вы знакомы с функциями, связанными с + printf () + , то это напоминает + sprintf () + . Если нет, то не переживайте.)
Спецификаторы конверсии
Спецификаторы преобразования появляются в + + и определяют, как значения форматируются, когда они вставляются.
Спецификатор преобразования начинается с символа +% + и состоит из следующих компонентов:
+% + и + + обязательны. Остальные компоненты, показанные в квадратных скобках, не являются обязательными.
В следующей таблице приведены действия каждого компонента спецификатора преобразования:
Introduces the conversion specifier
Indicates one or more flags that exert finer control over formatting
Specifies the minimum width of the formatted result
Determines the length and precision of floating point or string output
Indicates the type of conversion to be performed
Читайте дальше, чтобы узнать, как это работает.
Тип конверсии
Тип преобразования + + является последним компонентом спецификатора преобразования:
Источник: www.codeflow.site
Команды ввода-вывода и арифметические операции в Питоне.
После того, как вы узнали в какой среде можно создавать и выполнять программы на Питоне, можно приступить к изучению основ этого языка. Самым интересным является то, что первые простые программы можно писать без знаний о каких-либо сложных конструкций и тела программы (как и в Паскале). В этом уроке мы познакомимся с операциями ввода-вывода в Питоне, а также быстрого вывода арифметических операций на экран компьютера.
Чтобы узнать, что получается в результате действий, проводимых вами в программе, необходимо как-то это отобразить. К самому простому и основному способу вывода данных из программы является старый добрый вывод результата на экран, прямо из командной строке Shell среды разработки IDLE.
Для вывода значений на экран, в Питоне предусмотрена функция print(). Внутри круглых скобок, через запятую, следует писать то, что вы хотите вывести.
Примеры вывода:
Вывод результата вычислений на экран
Для немедленного вывода результата вычислений на экран, производим действия в скобочках.
print(2+3) # результат сложения 2 и 3
Также, есть возможность с помощью одного оператора вывести на экран сразу несколько результатов вычислений.
print(2*5, (10-1)*9) # результат вычисления нескольких арифметических операций
Вывод текста
print(Введите значение b) # вывод поясняющей строки
Вывод значения переменной на экран
print(b) # вывод в виде строки значения переменной b
В отличие от других языков программирования конструкции в Питоне предложения не нужно заканчивать завершающим символом.
b=2+3 # Помещаем в переменную b, результат сложения двух чисел
print(b) # Выводим значение переменной на экран
Ввод и вывод значений на экран
А теперь перейдём к рассмотрению оператора ввода значений в программу. Для ввода данных в программу из командной строки в Питоне используют функцию input(). Она считывает введенные вами данные из одной строку. Ввод данных завершают нажатием клавиши Enter . Можно вводить значения с пояснением, указывая его прямо в скобках
Pervoe_znachenie=input(Введите значение Pervoe_znachenie=) # Выводим поясняющую строку и передаем результат ввода в переменную Pervoe_znachenie
print(Pervoe_znachenie) # Выводим значение переменной Pervoe_znachenie на экран
Однако не стоит забывать и о типе вводимых данных. Помните, что в самом начале статьи я говорил, что мы вводим строку. Проверим это на примере. Попробуйте выполнить следующий код:
print(Введите значение a)
a=input()
print(Введите значение b)
b=input()
c=a+b
print(Сумма а и b = + c)
Как видим, результатом сложения является состыковка двух символов (конкатенация), а не реальная сумма чисел.
Выходом из этой ситуации будет два нижеприведенных варианта:
Перенос значения в уже заданную переменную
print(Введите значение a)
a=input()
print(Введите значение b)
b=input()
a=a+b
print(Сумма а и b =, a)
Вывод без использования новой переменной
print(Введите значение a)
a=input()
print(Введите значение b)
b=input()
print(Сумма а и b =, a+b)
В следующем уроке, когда мы будем говорить о типе данных, данная ситуация будет легко исправлена.
print(2 ** 16) # возведение в степень
print(37 / 3) # обычное полное деление числа
print(37 // 3) # частное от деления нацело
print(37 % 3) # остаток от деления нацело
Источник: inphormatika.ru
Ввод/вывод данных в Python. Логические операторы. Тернарный оператор.
При обучении языку python, часто возникает необходимость осуществлять ввод и вывод данных в терминале.
08 марта 2023 (обновлено 09.03.2023) · На чтение: 9 мин Комментарии: 0
Просмотров статьи: 88
Урок №2 Подпишитесь на рассылку в конце статьи чтобы смотреть материал раньше всех
Вывод данных в Python
Для вывода данных используется функция print . print(objects) — выводит текстовое представление объектов, разделенных пробелом по умолчанию, в стандартный поток stdout.
Для того, чтобы обеспечить гибкость вывода, в фукнкцию print можно передать некоторые дополнительные параметры:
- sep — позволяет указать разделитель между объектами. По умолчанию равняется ‘ ‘ .
- end — позволяет указать символ, атоматически подставляемый в конец напечатанного текста. По умолчанию равняется n .
- file — позволяет указать, куда будет выводиться текст. По умолчанию равняется sys.stdout .
Кроме того, у нас есть возможность использовать строковые методы форматирования, но о них мы поговорим несколько позже, когда будем рассматривать строки.
Ввод данных в Python
Для ввода данных из консоли используется функция input().
input([invite_string]) — в интерактивном режиме происходит остановка выполнения программы и ожидается ввод пользователя. При указании invite_string пользователю будет выведено указанное сообщение.
В указанную переменную будет помещена строка с данными, введенными пользователем. Если нам необходимо получить данные типа, отличного от строки, мы должны сделать явное преобразование типа.
Code Snippets
# Печать объекта.
print(42)
# Печать нескольких переданных объектов.
print(42, 24, 0, 17)
42 24 0 17
# Указание разделителя, отличного от значения по умолчанию.
print(42, 24, 0, 17, sep=’n’)
42 24 0 17
# Указание завершающего символа.
print(42, 24, 0, 17, end=’42
# Ввод значения с консоли.
val = input()
print(val, type(val))
# Приветственная строка, явное преобразование типа.
val = int(input(‘Invite string: ‘))
print(val, type(val))
Invite string: 767 767
# Приветственная строка, явное преобразование типа.
val = float(input(‘Invite string: ‘))
print(val, type(val))
Invite string: 23 23.0
Задача для закреплении
Запросить у пользователя три числа. Сложите первое и второе число. Вычтите от второго третье. Выведите произведение полученных значений.
Условные операторы и ветвление. Логические выражения
Теоретическая часть
Ход выполнения программы называется линейным, если выражения выполняются друг за другом в строго определенном порядке.
К сожалению, часто этого не достаточно. В таких случаях используются условные операторы.
if condition:
# действия, выполняемые при истинности условия condition
pass
elif other_condition:
# действия, выполняемые при истинности other_condition
pass
else:
# действия, выполняемые во всех остальных случаях
pass
Вложенные условия
Блоки условного оператора могут быть вложены друг в друга. Иногда это необходимо, однако стоит учитывать, что большое количество вложенных условных операторов увеличивает цикломатическую сложность программы.
Условия. Операторы сравнения
Условия могут формироваться одним из следующих способов:
- Любой объект в Python может быть условием. Объект встроенного типа считается ложным, если он равен нулевому числу (любого типа) или пустой коллекции. Все остальные объекты считаются истиными.
- Операторы сравнения формируют условия:
- a == b — равенство значений объектов.
- a != b — неравенство значений объектов.
- a < b — первый объект меньше второго.
- a > b — первый объект больше второго.
- a
- a >= b — первый объект больше либо равен второму.
- Составные условия.
- Другие инструкции, которые возвращают логическое значение или любой другой объект (см. первый пункт).
Составные условия. Логические операторы
Python поддерживает набор логических операторов:
- a in b — логический оператор вхождения.
- not a — отрицание.
- a and b — логическое И.
- a or b — логическое ИЛИ.
В качестве операндов для логических операторов могут присутствовать другие условия, в результате чего получаются составные условия — состоящие из комбинации нескольких.
Ленивые вычисления в Python
Операторы and и or поддерживают ленивые вычисления. Идея заключается в том, что если нам заранее известен результат логического выражения, у нас нет необходимости вычислять все его операнды.
Для and вычисления остановятся, когда будет встречен первый ложный элемент.
Для or вычисления остановятся, когда будет встречен первый истинный элемент.
Логические операторы могут быть скомбинированы в сложное условие и вычислено в соответствии с приоритетом операторов:
if condition1 and condition2 or condition3:
pass
Значения, возвращаемые логическими операторами and и or
В Python and и or возвращают не True или False, а один из своих операндов(благодаря тому, что любой объект может быть оценен как истина или ложь).
or | первый истинный операнд | последний ложный операнд(последний операнд) |
and | первый ложный операнд | последний истинный операнд (последний операнд) |
Тернарный условный оператор
В Python существует короткая форма записи условного оператора: тернарный оператор. Он может быть использован внутри выражения например, при присвоении переменной.
a = true_value if condition else false_value
В таком случае, при выполнении условия condition в переменную a будет присвоено указанное значение true_value а в случае его ложности, false_value .
a = ‘строка’
b =»
if b:
print(‘t’)
else:
print(‘f’)
Code Snippets
Условные операторы
# Условный оператор с оператором сравнения
a = 0
b = 12
if a > b:
print(‘greater’)
else:
print(‘not greater’)
# Объекты могут также быть оценены как истинные или ложные
a = 0
if a:
print(‘yes’)
else:
print(‘no’)
# Истинными являются все ненулевые объекты и непустые коллекции.
a = 21
if a:
print(‘yes’)
else:
print(‘no’)
# Пример составного условия. Ищем положительное нечетное число.
num = int(input(‘Введите число: ‘))
if num > 0 and num % 2:
print(‘yes’)
else:
print(‘no’)
# То же самое через вложенные условия.
# Фактически, сейчас мы реализуем условие and через вложенные условия.
num = int(input(‘Введите число: ‘))
if num > 0
if num % 2:
print(‘yes’)
else:
print(‘no’)
else:
print(‘no’)
# В Python нет оператора множественного выбора, но похожее поведение эмулируется
# с помощью конструкции elif.
a = int(input(‘Введите число: ‘))
if a > 0:
print(‘> 0’)
elif a < 0:
print(‘< 0’)
else:
print(‘ == 0’)
Составные условия. Логические операторы
# Оператор in проверяет вхождение объекта в коллекцию.
lst = [1, 2, 3, 4]
print(5 in lst)
False
# Оператор in и not могут быть скомбинированы.
lst = [1, 2, 3, 4]
print(5 not in lst)
True
# Значение, возвращаемое and.
lst = [1, 2, 3]
lst1 = [123]
print(lst and lst1)
# Значение при ложном and. lst = [1, 2, 3] lst1 = [] print(lst and lst1) [1]
# Значение, возвращаемое при истинном or. lst = [1] dct = print(lst or dct)
# Значение, возвращаемое при ложном or. lst = [] dct = <> print(lst or dct)
# Проверим, что наши операторы ленивые.
def f1():
print(‘f1’)
return True
def f2():
print(‘f2’)
return False
value = f2() and f1()
Тернарный оператор
# Проверим, была ли введена непустая строка.
val = input(‘Введите строку:’)
if val:
print(val)
else:
print(‘Пустая строка’)
Введите строку: Пустая строка
# То же самое, но с тернарным оператором.
val = input(‘Введите строку:’)
print(val) if val else print(‘Пустая строка’)
Введите строку: Пустая строка
# Пример с присвоением результата значению.
a = int(input(‘Введите число: ‘))
odd = True if a % 2 else False
print(odd)
Введите число: 23 True
Задачи для закрепления
- Проверьте делимость числа на 17.
- Если число нечетное, выведите “ого”, если четное “ага”.
- Если число нечетное, выведите “ого” если число четное, и отрицательное, выведите “маловато”, если число четное и положительное, выведите “нормально”, если число равно нулю, выведите “на нет спроса нет”.
- Переписать оператор or через вложенные условные операторы.
# вернуть true, если число больше нуля либо нечетное, и false в противном случае
if num > 0 or num % 2:
num = int(input(‘Введите число ‘))
Подпишитесь на рассылку
Если это было вам полезно — вы можете сказать нам спасибо!
Подпишитесь на нас ВКонтакте или Telegram
Предыдущая запись
Следующая запись
Ещё публикации из этой рубрики:
Тестирование
Перехват исключений с использованием try и except Python
Введение в ООП Python
Файлы и сериализация в Python
Функции и модульность
Циклы в Python
- Парсер Wildberries на python 2022 год (5 132)
- 15 удобных плагинов и горячих клавиш PyCharm для начинающих питонистов (1 660)
- Selenium webdriver в python. Поиск элементов на примере парсера комментариев Wildberries 2022 (1 409)
- Телеграм. Как собрать информацию из чатов. Часть 1 (1 274)
- Авито. Cбор данных товаров используя Python (1 157)
Строки. Строковые операции в Python
GitFlic первый российский сервис для хранения кода и работы с ним
IDE Fleet от JetBrains теперь в раннем доступе. Современная среда для совместной разработки
15 удобных плагинов и горячих клавиш PyCharm для начинающих питонистов
Исключения (Exceptions) в Python. Базовый набор для начинающих в 2022 году
Введение в ООП Python
Файлы и сериализация в Python
Язык Python и объектно-ориентированное программирование в 2022 году
Авито. Cбор данных товаров используя Python
Источник: happypython.ru