Skip to content

Commit 641d098

Browse files
[TASK] Python #1 (SENATOROVAI/intro#5)
Closes SENATOROVAI/intro#5
1 parent 19c3c91 commit 641d098

24 files changed

Lines changed: 25491 additions & 1 deletion

python/makarov/chapter13_pandas.ipynb

Lines changed: 5365 additions & 0 deletions
Large diffs are not rendered by default.

python/makarov/chapter13_pandas.py

Lines changed: 599 additions & 0 deletions
Large diffs are not rendered by default.

python/makarov/chapter_10_numpy.ipynb

Lines changed: 3706 additions & 0 deletions
Large diffs are not rendered by default.

python/makarov/chapter_10_numpy.py

Lines changed: 768 additions & 0 deletions
Large diffs are not rendered by default.

python/makarov/chapter_11_iterator.ipynb

Lines changed: 1175 additions & 0 deletions
Large diffs are not rendered by default.

python/makarov/chapter_11_iterator.py

Lines changed: 423 additions & 0 deletions
Large diffs are not rendered by default.

python/makarov/chapter_12_decorators.ipynb

Lines changed: 1625 additions & 0 deletions
Large diffs are not rendered by default.

python/makarov/chapter_12_decorators.py

Lines changed: 791 additions & 0 deletions
Large diffs are not rendered by default.

python/makarov/chapter_3_if_and_loops.ipynb

Lines changed: 424 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
"""Условия и циклы.
2+
3+
Продолжение.
4+
"""
5+
6+
from typing import Union
7+
8+
# +
9+
# Еще раз про условия с if
10+
# напишем программу, которая разобьет все числа на малые,
11+
# средние и большие
12+
13+
# запросим число у пользователя и преобразуем в тип int
14+
x_var = int(input())
15+
16+
# и наконец классифицируем число
17+
if x_var < 10:
18+
print("Small number")
19+
elif x_var < 100:
20+
print("Medium number")
21+
else:
22+
print("Large number")
23+
24+
# +
25+
# Несколько условий в одном выражении с операторами and или or
26+
27+
x_var = int(input())
28+
29+
if x_var < 10 or x_var > 100:
30+
print("Small or large number")
31+
else:
32+
print("Medium number")
33+
34+
# +
35+
# Проверка вхождения элемента в объект с in / not in
36+
37+
# можно проверить вхождение слова в строку
38+
sentence = "To be, or not to be, that is the question"
39+
word = "question"
40+
if word in sentence:
41+
print(f"Слово {word} найдено.")
42+
# -
43+
44+
# или отсутствие элемента в списке
45+
my_list = [1, 2, 3, 4, 5]
46+
number = 10
47+
if number not in my_list:
48+
print(f"Элемент {number} отсутствует в списке.")
49+
50+
# +
51+
# кроме того, можно проверить вхождение ключа и значения в словарь
52+
53+
# возьмем очень простой словарь
54+
d_var = {"apple": 3, "tomato": 6, "carrot": 2}
55+
# вначале поищем яблоки среди ключей словаря
56+
if "apple" in d_var:
57+
print("Нашлись")
58+
# а затем посмотрим, нет ли числа 6 среди его значений
59+
# с помощью метода .values()
60+
if 6 in d_var.values():
61+
print("Есть")
62+
63+
# +
64+
# Циклы в питоне
65+
# цикл for
66+
67+
# поочередно выведем элементы списка
68+
my_list = [1, 2, 3, 4, 5]
69+
for item in my_list:
70+
print(item)
71+
72+
# +
73+
# создадим словарь, значениями которого будут списки из двух элементов
74+
# затем создадим две переменные-контейнера и применим метод .items()
75+
76+
goods_dict: dict[str, list[Union[int, str]]] = {
77+
"apple": [3, "kg"],
78+
"tomato": [6, "pcs"],
79+
"carrot": [2, "kg"],
80+
}
81+
82+
for key, value in goods_dict.items():
83+
print(key, value)
84+
# -
85+
86+
# возьмем только одну переменную и применим метод .values()
87+
for value in goods_dict.values():
88+
# значение представляет собой список, выведем его первый
89+
# элемент с индексом [0]
90+
print(value[0])
91+
92+
# предположим, что у нас есть следующая база данных клиентов
93+
clients = {
94+
1: {"name": "Анна", "age": 24, "sex": "male", "revenue": 12000},
95+
2: {"name": "Илья", "age": 18, "sex": "female", "revenue": 8000},
96+
}
97+
98+
for i, info in clients.items():
99+
print(f"clientID: {i}")
100+
101+
# во втором цикле возьмем информацию об этом клиенте (это тоже словарь)
102+
for field_name, field_value in info.items():
103+
# и выведем каждый ключ (название поля) и значение (саму информацию)
104+
print(f"{field_name}: {field_value}")
105+
# добавим пустую строку после того, как выведем информацию об одном клиенте
106+
print()
107+
108+
# создадим последовательность от 0 до 4
109+
for i in range(5):
110+
print(i)
111+
112+
# и от 0 до 5 с шагом 2 (то есть будем выводить числа через одно)
113+
for i in range(0, 6, 2):
114+
print(i)
115+
116+
# возьмем месяцы года
117+
months = [
118+
"January",
119+
"February",
120+
"March",
121+
"April",
122+
"May",
123+
"June",
124+
"July",
125+
"August",
126+
"September",
127+
"October",
128+
"November",
129+
"December",
130+
]
131+
# и продажи мороженого в тыс. рублей в каждый из месяцев
132+
sales = [120, 150, 170, 130, 160, 180, 200, 210, 190, 220, 230, 250]
133+
# задав последовательность через enumerate,
134+
for i, month in enumerate(months):
135+
# мы можем вывести каждый из элементов обоих списков в одном цикле
136+
print(f"{i}: {month}, {sales[i]}")
137+
138+
# выведем числа от 1 до 10, но только четные
139+
for i in range(1, 11):
140+
# если число четное, выведем его
141+
if i % 2 == 0:
142+
print(i)
143+
144+
# +
145+
# Последовательность в обратном порядке
146+
# Способ 1. Функция reversed()
147+
148+
# создадим список
149+
my_list = [1, 2, 3, 4, 5]
150+
151+
# выведем элементы списка в обратном порядке с помощью функции reversed()
152+
for item in reversed(my_list):
153+
print(item)
154+
# -
155+
156+
# или с помощью range()
157+
for i in reversed(range(5)):
158+
print(i)
159+
160+
# Способ 2. Указать −1 в качестве параметра шага
161+
# чтобы вывести 0, вторым параметром нужно указать -1
162+
for i in range(4, -1, -1):
163+
print(i)
164+
165+
# +
166+
# Способ 3. Функция sorted()
167+
168+
for i in sorted(my_list, reverse=True):
169+
print(i)
170+
171+
# +
172+
# Функция enumerate()
173+
# пусть дан список с днями недели
174+
days = [
175+
"Понедельник",
176+
"Вторник",
177+
"Среда",
178+
"Четверг",
179+
"Пятница",
180+
"Суббота",
181+
"Воскресенье",
182+
]
183+
184+
# выведем индекс (i) и сами элементы списка (day)
185+
# выведем индекс и элементы списка, но начнем с 1
186+
for i, day in enumerate(days, start=1):
187+
print(i, day)
188+
# -
189+
190+
# Цикл while
191+
# зададим начальное значение счетчика
192+
counter = 0
193+
# пока счетчик меньше трех
194+
while counter < 3:
195+
print(f"Текущее значение счетчика: {counter}")
196+
# увеличим значение счетчика на единицу
197+
counter += 1
198+
print(f"Новое значение счетчика: {counter}\n")
199+
200+
# +
201+
# Break, continue
202+
# Оператор break
203+
204+
# создадим константу для выхода из цикла и счетчик
205+
EXIT_NUMBER = 5
206+
counter = 0
207+
# создадим бесконечный цикл
208+
while True:
209+
# сделаем условие выхода из цикла
210+
if counter == EXIT_NUMBER:
211+
break
212+
counter += 1
213+
print(counter)
214+
215+
# +
216+
# Оператор continue
217+
218+
# выведем числа от 1 до 10, но только четные c помощью оператора continue
219+
for i in range(1, 11):
220+
# если число нечетное, пропустим его
221+
if i % 2 != 0:
222+
continue
223+
# если число четное, выведем его
224+
print(i)

0 commit comments

Comments
 (0)