Главная / Курсы / Python / Циклы

Глава 5. Циклы

В питоне есть два вида циклов: for и while. О них и поговорим.

Цикл while

Цикл while — это всем известный классический while из JavaScript, C++, Java:

x = 100

while x > 0:
handle(x)
x -= 1

Вариация вечного цикла:

while True:
rotate_spinner()

Этот цикл тоже является вечным, потому что 1 интерпретируется как «истина»:

while 1:
run()

Цикл for

Цикл for последовательно перебирает элементы коллекции:

for resp in responses:
parse(resp)

Пример прохода в цикле for по последовательности чисел от 0 до 9, которую генерирует функция range():

for x in range(10):
print(x)

Имплементируйте тело функции. Пусть она возвращает количество слов, из которых состоит строка s в snake_case. snake_case — стиль написания составных слов, при котором слова разделяются символом подчеркивания _.

Например, если на вход функции прилетает строка s, равная "not_supported_format", функция вернет 3. А для "naive_solution" вернет 2.

def get_words_count(s):
# Your code here

Не забудьте обработать случай, когда строка s пустая. Количество слов, из которых состоит слово в snake_case, равно количеству символов _ + 1.

def get_words_count(s): if s == "": return 0 count = 0 for c in s: if c == "_": count += 1 return count + 1
Задача # 1

Операторы continue и break

В питоне есть оператор continue для перехода на следующую итерацию цикла.

В этом цикле выведутся все согласные буквы:

s = "Now is better than never."

for letter in s:
if letter in "aeiouy":
continue

print(letter)

Также в питоне есть оператор break для выхода из цикла. Этот цикл завершится на первом встреченном пробеле:

s = "Although never is often better than right now."

for letter in s:
if letter == " ":
break

print(letter)

Ключевое слово else в связке с циклами

Забавная особенность питона: ключевое слово else может использоваться не только в связке с if, но и после циклов while и for! В таком случае else сработает, только если выход из цикла произошел без участия break.

s = "go"

for letter in s:
if letter == "y":
break

print(letter)
else:
print("There is no letter 'y' in string")
g
o
There is no letter 'y' in string

В данном примере из цикла for нет выхода по break. Поэтому срабатывает ветка else.

Имплементируйте функцию print_letters(). На вход она принимает строку. Функция анализирует каждую букву строки:

  • Если в строке содержится заглавная буква, то печатает эту букву. Для определения, что буква заглавная, используйте метод строки isupper(). Например, при переборе букв строки, где c — буква, вызов метода выглядит так: c.isupper().
  • Если найден пробел, то все следующие за ним символы пропускаются.
  • Если в строке не было ни одного пробела (в том числе если строка пустая), функция печатает "no spaces".
def print_letters(s):
# Your code here

Для выхода из цикла используйте break, для перехода на новую итерацию — continue, а для обработки условия не выхода по break — ветку else.

def print_letters(s): for с in s: if с.isupper(): print(с) if с == ' ': break else: print("no spaces")
Задача # 2

Резюмируем

  • В питоне есть два вида циклов: for и while.
  • Циклы поддерживают операторы break, continue и else.
  • Ветка else цикла срабатывает, если из цикла не было выхода по break.
Отправка...
Наша группа в telegram. Здесь можно задавать вопросы и общаться.
Задонатить. Если вам нравится курс, вы можете поддержать развитие площадки!