-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path9_loops.py
188 lines (122 loc) · 6.09 KB
/
9_loops.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
########################################################################################################################
# 57 - Цикл While
"""
Задание
Модифицируйте функцию print_numbers, так, чтобы она выводила числа в обратном порядке. Для этого нужно идти от верхней
границы к нижней. То есть, счетчик должен быть инициализирован максимальным значением, а в теле цикла его
нужно уменьшать до нижней границы
"""
# Solution:
def print_numbers(num):
while (num > 0):
print(num)
num -= 1
print('finished!')
########################################################################################################################
# 58 - Переворот строки
"""
Задание
Реализуйте функцию mysubstr, которая извлекает из строки подстроку указанной длины. Она принимает на вход два
аргумента: строку и длину, и возвращает подстроку начиная с первого символа
"""
# Solution:
def mysubstr(string, num):
return string[:num]
########################################################################################################################
# 59 - Пограничные случаи
"""
Задание
Реализуйте функцию-предикат is_arguments_for_substr_correct, которая принимает три аргумента:
строку
индекс, с которого начинать извлечение
длину извлекаемой подстроки
Функция возвращает False, если хотя бы одно из условий истинно:
Отрицательная длина извлекаемой подстроки
Отрицательный заданный индекс
Заданный индекс выходит за границу всей строки
Длина подстроки в сумме с заданным индексом выходит за границу всей строки
В ином случае функция возвращает True.
Не забывайте, что индексы начинаются с 0, поэтому индекс последнего элемента — это «длина строки минус 1»
"""
# Solution:
def is_arguments_for_substr_correct(string, index, long):
if long < 0:
return False
if index < 0:
return False
if index > (len(string) - 1):
return False
if (long + index) > (len(string) - 1):
return False
return True
########################################################################################################################
# 60 - Синтаксический сахар
"""
Задание
Реализуйте функцию count_chars, которая считает повторения указанного символа в строке. (В программировании говорят
«количество вхождений символа в строке»)
Функция принимает на вход два параметра: строку и символ. Функция возвращает число
"""
# Solution:
def count_chars(string, char):
count = 0
for letter in string:
if letter == char:
count += 1
return count
########################################################################################################################
# 61 - Циклы и условия
"""
Задание
Модифицируйте последний вариант функции shouter, добавив такие условия:
Если длина строки больше 0 и меньше 5, то вернуть оригинальную строку без повторений.
Если длина строки ровно 5 символов, то вернуть строку, повторенную 10 раз.
Условие «длина больше 5, то вернуть строку, повторенную 100 раз» должно сохраниться
"""
# Solution:
def shouter(string):
length = len(string)
if length > 0 and length < 5:
return string
if length == 5:
return string * 10
result = ''
if length > 5:
counter = 0
while counter != 100:
result += string
counter += 1
return result
########################################################################################################################
# 62 - Циклы и условия 2
"""
Задание
Как видите, функция get_even_numbers_up_to возвращает числа, слепив их вместе. Модифицируйте функцию так, чтобы числа
в результате стояли через запятую
"""
# Solution:
def get_even_numbers_up_to(number):
counter = 1
result = ''
while counter <= number:
if counter % 2 == 0:
result = result + str(counter) + ','
counter += 1
return result
########################################################################################################################
# 63 - Возврат из циклов
"""
Задание
Реализуйте функцию does_contain, которая проверяет с учётом регистра), содержит ли строка указанную букву (в этот
раз не пользуйтесь оператором in!). Функция принимает два параметра:
Строка
Буква для поиска
"""
# Solution:
def does_contain(string, char):
does = False
for item in string:
if char == item:
does = True
return does
########################################################################################################################