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