Skip to content

Commit 82fbaf9

Browse files
committed
8-9 (logic, loops)
1 parent a50a36f commit 82fbaf9

File tree

2 files changed

+323
-0
lines changed

2 files changed

+323
-0
lines changed

8_logic.py

Lines changed: 248 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,248 @@
1+
########################################################################################################################
2+
3+
# 46 - Логический тип
4+
5+
"""
6+
Задание
7+
8+
Напишите функцию is_pensioner, которая принимает возраст в качестве единственного аргумента и проверяет, является
9+
ли этот возраст пенсионным. Пенсионным считается возраст 60 лет и больше
10+
11+
"""
12+
13+
# Solution:
14+
15+
def is_pensioner(age):
16+
if age >= 60:
17+
return True
18+
return False
19+
20+
21+
########################################################################################################################
22+
23+
# 47 - Предикаты
24+
25+
"""
26+
Задание
27+
28+
Напишите функцию is_mister, которая принимает строку и проверяет, является ли она словом 'Mister'
29+
"""
30+
31+
# Solution:
32+
33+
def is_mister(word):
34+
return word == 'Mister'
35+
36+
37+
########################################################################################################################
38+
39+
# 48 - Комбинирование операций и функций
40+
41+
"""
42+
Задание
43+
44+
Сэм решил изучить историю Таргариенов со времени первых людей, но книг было много и информация могла находиться
45+
в любой из них. К счастью для Сэма, большинство книг были оцифрованы молодыми мейстерами. Он подумал, что неплохо бы
46+
написать функцию, которая анализирует тексты на наличие в них упоминания фамилии Таргариенов.
47+
48+
Для выполнения задания вам потребуется способ, позволяющий отрезать от строки, начиная от её начала, кусок заданной
49+
длины. Сделать это легко, используя слегка изменённый вариант операции извлечения символа:
50+
51+
string[:n]
52+
53+
Здесь n - количество символов, которое мы хотим “отрезать” от строки, находящейся в переменной string, начиная от
54+
начала. Примеры:
55+
56+
print('Winterfell'[0:6]) # => 'Winter'
57+
print('Stark'[0:6]) # => 'Stark'
58+
59+
(во втором примере символов получилось меньше, чем мы хотели, ведь в изначальной строке было меньше шести символов)
60+
61+
Реализуйте функцию has_targaryen_reference, которая принимает на вход строку и проверяет начинается ли она с Targaryen
62+
Эта функция должна извлекать подстроку такой же длины, как и у слова Targaryen, а затем проверять, равна ли извлечённая
63+
подстрока строке Targaryen. Напомню, что индексы начинаются с нуля
64+
"""
65+
66+
# Solution:
67+
68+
def has_targaryen_reference(string):
69+
return string[:9] == 'Targaryen'
70+
71+
72+
########################################################################################################################
73+
74+
# 49 - Логические операторы
75+
76+
"""
77+
Задание
78+
Напишите функцию is_lannister_soldier, которая принимает на вход два аргумента:
79+
80+
Цвет доспехов (строка). Если доспехи красные, то строка red.
81+
None, если щита нет. Строка lion, если щит есть, и на нём изображен лев.
82+
83+
Функция возвращает True, если распознан Ланнистер, и False, если не распознан
84+
"""
85+
86+
# Solution:
87+
88+
def is_lannister_soldier(color, shield):
89+
if shield == 'lion':
90+
return True
91+
return (color == 'red' and shield == None)
92+
93+
94+
########################################################################################################################
95+
96+
# 50 - Отрицание
97+
98+
99+
"""
100+
Задание
101+
102+
Реализуйте функцию is_not_lannister_soldier, которая проверяет, что солдат — не Ланнистер. Функция принимает на вход
103+
такие же аргументы, как и функция is_lannister_soldier:
104+
105+
Цвет доспехов (строка). Если доспехи красные, то строка red.
106+
None если щита нет. Строка lion если щит есть, и на нём изображен лев.
107+
108+
Вам доступна уже готовая к использованию функция is_lannister_soldier. Можете воспользоваться ей чтобы не писать
109+
все логические условия заново
110+
"""
111+
112+
# Solution:
113+
114+
from hexlet.code_basics import is_lannister_soldier
115+
116+
# BEGIN
117+
def is_not_lannister_soldier(color, shield):
118+
return not is_lannister_soldier(color, shield)
119+
# END
120+
121+
122+
########################################################################################################################
123+
124+
# 51 - Логические операторы 2
125+
126+
"""
127+
Задание
128+
129+
Напишите функцию is_neutral_soldier, которая принимает на вход два аргумента:
130+
131+
Цвет доспехов (строка). Возможные варианты: red, yellow, black.
132+
Цвет щита (строка). Возможные варианты: red, yellow, black.
133+
134+
Функция возвращает True если цвет доспехов не красный и цвет щита чёрный. В остальных случаях возвращает False
135+
"""
136+
137+
# Solution:
138+
139+
def is_neutral_soldier(color, shield):
140+
return (color != 'red' and shield == 'black')
141+
142+
143+
########################################################################################################################
144+
145+
# 52 - Условная конструкция
146+
147+
"""
148+
Реализуйте функцию guess_number, которая принимает число и проверяет, равно ли число заданному (пусть это будет 42)
149+
Если равно, то функция должна вернуть строку 'You win!', в противном случае нужно вернуть строку 'Try again!'
150+
"""
151+
152+
# Solution:
153+
154+
def guess_number(num):
155+
if num == 42:
156+
return 'You win!'
157+
return 'Try again!'
158+
159+
160+
########################################################################################################################
161+
162+
# 53 - else
163+
164+
"""
165+
Задание
166+
167+
Реализуйте функцию normalize_url, которая выполняет так называемую нормализацию данных. Она принимает адрес сайта
168+
и возвращает его с https:// в начале
169+
170+
Функция принимает адреса в виде АДРЕС или http://АДРЕС, но всегда возвращает адрес в виде https://АДРЕС
171+
"""
172+
173+
# Solution:
174+
175+
def normalize_url(url):
176+
if 'http://' == url[:7]:
177+
return 'https://' + url[7:]
178+
if 'https://' in url:
179+
return url
180+
return 'https://' + url
181+
182+
183+
########################################################################################################################
184+
185+
# 54 - else + if = elif
186+
187+
"""
188+
Задание
189+
190+
На электронной карте Вестероса, которую реализовал Сэм, союзники Старков отображены зеленым кружком, враги — красным, а
191+
нейтральные семьи — серым
192+
193+
Напишите для Сэма функцию who_is_this_house_to_starks, которая принимает на вход фамилию семьи и возвращает одно из трех
194+
значений: 'friend', 'enemy', ‘neutral'
195+
196+
Правила определения:
197+
198+
Друзья ('friend'): ‘Karstark’, ‘Tully’
199+
Враги ('enemy'): ‘Lannister’, ‘Frey’
200+
Любые другие семьи считаются нейтральными
201+
202+
"""
203+
204+
# Solution:
205+
206+
def who_is_this_house_to_starks(house):
207+
if house == 'Karstark' or house == 'Tully':
208+
return 'friend'
209+
elif house == 'Lannister' or house == 'Frey':
210+
return 'enemy'
211+
return 'neutral'
212+
213+
214+
########################################################################################################################
215+
216+
# 55 - Тернарный оператор
217+
218+
"""
219+
Задание
220+
221+
Реализуйте функцию flip_flop, которая принимает на вход строку и, если эта строка равна 'flip', возвращает
222+
строку 'flop'. В противном случае функция должна вернуть 'flip'
223+
"""
224+
225+
# Solution:
226+
227+
def flip_flop(string):
228+
return 'flop' if string == 'flip' else 'flip'
229+
230+
231+
########################################################################################################################
232+
233+
# 56 - Истинность выражений
234+
235+
"""
236+
Задание
237+
238+
Напишите функцию is_falsy, которая проверяет, трактуется ли переданное значение, как ложное с точки зрения Python
239+
Можете использовать упомянутую выше функцию bool
240+
"""
241+
242+
# Solution:
243+
244+
def is_falsy(argument):
245+
return bool(argument) == False
246+
247+
248+
########################################################################################################################

9_loops.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
########################################################################################################################
2+
3+
# 57 - Цикл While
4+
5+
"""
6+
Задание
7+
8+
Модифицируйте функцию print_numbers, так, чтобы она выводила числа в обратном порядке. Для этого нужно идти от верхней
9+
границы к нижней. То есть, счетчик должен быть инициализирован максимальным значением, а в теле цикла его
10+
нужно уменьшать до нижней границы
11+
"""
12+
13+
# Solution:
14+
15+
########################################################################################################################
16+
17+
# 58 -
18+
19+
"""
20+
21+
"""
22+
23+
# Solution:
24+
25+
########################################################################################################################
26+
27+
# 59 -
28+
29+
"""
30+
31+
"""
32+
33+
# Solution:
34+
35+
########################################################################################################################
36+
37+
# 60 -
38+
39+
"""
40+
41+
"""
42+
43+
# Solution:
44+
45+
########################################################################################################################
46+
47+
# 61 -
48+
49+
"""
50+
51+
"""
52+
53+
# Solution:
54+
55+
########################################################################################################################
56+
57+
# 62 -
58+
59+
"""
60+
61+
"""
62+
63+
# Solution:
64+
65+
########################################################################################################################
66+
67+
# 63 -
68+
69+
"""
70+
71+
"""
72+
73+
# Solution:
74+
75+
########################################################################################################################

0 commit comments

Comments
 (0)