Глава 6. Операции со строками
В теории между теорией и практикой нет никакой разницы.
Но на практике разница есть.
Ян ван де Снепшойт
Python содержит инструменты для выполнения операций со строками, позво- ляющий, к примеру, разделять строку на две части по заданному символу или из- менять регистр строки. Скажем, если у вас есть строка, написанная ПРОПИС-
73
Введение в программирование
НЫМИ БУКВАМИ, и вы хотите изменить и на строчные, это можно сделать в
Python. В этой главе вы узнаете больше о строках, а также ознакомитесь с неко- торыми наиболее полезными инструментами Python для управления строками.
Тройные строки
Если строка занимает более одной строки кода, нужно поместить эту строку в тройные кавычки.
Python_ex154.py
1
"""
2
3
4
"""
Если вы попытаетесь определить строку, занимающую больше одной строки кода, с помощью одинарных или двойных кавычек, то получите синтаксическую ошибку.
Индексы
Строки, так же как списки и кортежи , итерируемы. Доступ к каждому символу в строке производится при помощи индекса. Как и у остальных итерируемых объ- ектов, первый символ в строке имеет индекс 0, каждый последующий индекс увеличивается на 1.
Python_ex155.py
1
author
= " "
2
author[0]
3
author[1]
4
author[2]
5
author[3]
6
author[4]
>> ' '
>> ' '
>> ''
>> ''
>> ' '
В данном примере для получения доступа к каждому символу в строке
« » использовались индексы 0, 1, 2, 3 и 4. Если вы попытаетесь извлечь символ, индекс которого больше, чем последний индекс вашей строки, Python сгенерирует исключение.
74Часть I
Python_ex156.py1
author
= "
"2
author[5]
>> IndexError: string index out of range
Python также позволяет извлекать элементы из списка с помощью
отрица-тельного индекса (должен быть отрицательным числом), то есть индекса, ко- торый находит
элементы в итерируемом объекте справа налево, а не слева на- право. Чтобы получить доступ к последнему элементу в итерируемом объекте, используйте отрицательный индекс 1.
Python_ex157.py1
author
= "
"2
author[-1]
>> ' '
Отрицательный индекс 2 находит предпоследний элемент, отрицательный индекс 3 — элемент, третий с конца, и так далее.
Python_ex158.py1
author
= "
"2
author[-2]
3
author[-3]
>> ''
>> ''
Строки неизменяемыКак и кортежи, строки неизменяемы . Нельзя изменять символы в строке – если вы хотите это сделать, нужно создавать новую строку.
Python_ex159.py1
ff
= ". Y& "
2
ff
= ". % Y& "
3
ff
>> '. % Y& '
В Python для создания новых строк из существующих есть несколько мето- дов, о которых вы узнаете в этой главе.
КонкатенацияС помощью оператора сложения можно соединять две или больше строк. Резуль- татом этой операции будет строка, состоящая из символов первой строки, за ко-
75
Введение в программирование торыми следуют символы из следующей строки (строк). Соединение строк назы- вают конкатенацией .
Python_ex160.py
1
" " + "" + "*"
>> ' *'
Python_ex161.py
1
" " + " " + " " + " *"
>> ' *'
Умножение строк
С помощью оператора умножения строку мож но умножать на число.
Python_ex162.py
1
"% " * 3
>> '% % % '
Изменение регистра
При помощи вызова метода upper можно превратить каждую букву в строке в прописную.
Python_ex163.py
1
"R - ...".upper()
>> 'R%KR$ -K AQV...'
Аналогично каждую букву в строке можно сделать строчной, вызвав в этой строке метод lower.
Python_ex164.py
1
"K |K AK%Q.".lower()
>> ' & .'
Первую букву предложения можно сделать прописной, вызвав метод capitalize
Python_ex165.py
1
" ...".capitalize()
>> 'K ...'
76
Часть I
Метод format
Новую строку можно создать при помощи метода format, проверяющего вхож- дения в строке фигурных скобок {} и заменяющего их переданными ему пара- метрами.
Python_ex166.py
1
"| {}".format(" ")
>> '| '
В качестве параметра можно также передавать переменную.
Python_ex167.py
1
last
= " "
2
"| {}".format(last)
>> '| '
Вы можете использовать в строке фигурные скобки столько раз, сколько по- желаете.
Python_ex168.py
1
author
= "| "
2
year_born
= "1897"
3
"{} {}.".format(author, year_born)
>> '| 1897.'
Метод format может пригодиться, если вы создаете строку из пользователь- ского ввода.
Python_ex169.py
1
n1
= input(" X :")
2
v
= input(" :")
3
adj
= input(" :")
4
n2
= input(" X :")
5
r
= """ , {} {} {} {}
6
""".format(n1,
7
v,
8
adj,
9
n2)
10
print(r)
>> X :
77
Введение в программирование
Программа предлагает пользователю вести два существительных, глагол и прилагательное, а затем при помощи метода format создает из ввода новую строку и выводит ее.
Метод split
Для строк существует метод split, который используется для разделения од- ной строки на две или больше строк. В качестве параметра методу split пере- дается строка, и он использует эту строку для разделения исходной строки на несколько строк. Например, строку "Q B . YG
2 !
"
можно разделить на две отдельные строки, передав методу split в качестве параметра точку.
Python_ex170.py
1
"Q B . YG 2 !".split(".")
>> ['Q B ', ' YG 2 !']
Результатом операции будет список с двумя элементами: строкой, состоящей из всех символов до точки, и строкой, состоящей из всех символов после точки.
Метод join
Метод join позволяет добавлять новые символы между всеми символами в строке.
Python_ex171.py
1
rst_three
= " "
2
result
= "+".join( rst_three)
3
result
>> ' ++'
Превратить список строк в единую строку можно, вызвав метод join в пу- стой строке и передав этот список в качестве параметра метода.
Python_ex172.py
1
words
= ["A& ",
2
"Y ",
3
" ",
4
" ",
5
"B",
6
" ",
7
"."]
8
one
= "".join(words)
9
one
>> 'A& Y B .'
78Часть I
Если вызвать метод join в строке,
содержащей лишь пробел, можно создать новую строку, в которой каждое слово отделено пробелом.
Python_ex173.py1
words
= [
"A&
",
2
"Y
",
3
" ",
4
" ",
5
"B
",
6
" ",
7
".
"]
8
one
= " ".join(words)
9
one
>> 'A& Y B .'
Метод stripМетод strip используется для удаления пробельных символов в начале и конце строки.
Python_ex174.py1
s
= " V
"2
s
= s.strip()
3
s
>> 'V '
Метод replaceМетод replace заменяет каждое вхождение строки другой строкой. Первый па- раметр — строка, которую нужно заменить, второй — строка, которой нужно за- менить вхождения.
Python_ex175.py1
equ
= " & .
"2
equ
= equ.replace(
" ",
"@
")
3
print(equ)
>> &@ @ @.
Поиск индексаИндекс первого вхождения символа в строке можно найти с помощью метода index.
Передайте в качестве параметра метода символ, который вы ищете, и метод index вернет индекс первого вхождения этого символа в строке.
79
Введение в программирование
Python_ex176.py
1
"& ".index(" ")
>> 5
Если метод index не найдет соответствия, Python сгенерирует исключение.
Python_ex177.py
1
"& ".index("B")
>> ValueError: substring not found
Если вы не уверены, есть ли в строке искомое соответствие, можете восполь- зоваться обработкой исключений.
Python_ex178.py
1
try:
2
"& ".index("B")
3
except:
4
print("$ & .")
>> $ & .
Ключевое слово in
Ключевое слово in проверяет, содержится ли строка в другой строке, и возвра- щает значение True или False.
Python_ex179.py
1
" " in " *."
>> True
Python_ex180.py
1
"V*" in " *."
>> False
Поместите ключевое слово not перед in, чтобы проверить отсутствие стро- ки в другой строке.
Python_ex181.py
1
" " not in " "
>> True
Управляющие символы
Если вы используете кавычки внутри строки, то получите синтаксическую ошибку.
80
Часть I
Python_ex182.py
1
# .
2
" B "$ .""
>> SyntaxError: invalid syntax
Эту ошибку можно исправить, поместив перед кавычками символ обратного слеша.
Python_ex183.py
1 " B \"$ .\""
>> ' B "$ ."'
Python_ex184.py
1 ' B \"$ .\"'
>> ' B "$ ."'
Управляющие символы сообщают Python, что знак, перед которым они по- мещены (в нашем случае, кавычки), не имеет специального значения, а предна- значен для представления обычного символа. Для этого Python использует об- ратный слеш .
Не нужно указывать управляющие символы перед одинарными кавычками в строке с двойными кавычками.
Python_ex185.py
1 " B '$ .'"
>> " B '$ .'"
Также можно поместить двойные кавычки внутри одинарных — это проще, чем указывать управляющие символы перед двойными кавычками.
Python_ex186.py
1 ' B "$ ."'
>> ' B "$ ."'
Новая строка
Помещение символов \n внутрь строки выполняет перенос строки.
Python_ex
187.py
1 print(" 1\n 2\n 3")
>> 1
>> 2
>> 3
81
Введение в программирование
Извлечение среза
Извлечение среза — это способ вернуть новый итерируемый объект , состо- ящий из подмножества элементов другого итерируемого объекта. Синтак- сис для извлечения среза следующий: _
[_
: _ ]. Начальный индекс указывает на начало среза, конечный — на конец среза.
Ниже показано, как извлечь срез списка.
Python_ex188.py
1
ct
= ["K ",
2
"",
3
" ",
4
" ",
5
" "]
6
ct[0:3]
>> ['K ', '', ' ']
При извлечении среза начальный индекс указывает на элемент под этим индексом, но конечный индекс указывает на элемент перед соответствующим индексом. Вследствие этого, если вы хотите получить срез от "K " (ин- декс 0) до " " (индекс 2), нужно извлекать срез от индекса 0 до индекса 3.
Ниже приведен пример извлечения среза строки.
Python_ex189.py
1
ivan
= """ R
* R R ."""
2
ivan[0:24]
3
ivan[24:93]
>> ' R '
>>
' *
R R .'
Если ваш начальный индекс — 0, тогда можете оставить его пустым.
Python_ex190.py
1
ivan
= """ R -
* R R ."""
2
ivan[:24]
>> ' R '
82Часть I
Если ваш конечный индекс является последним индексом в итерируемом объекте, можете также оставить его пустым.
Python_ex191.py1
ivan
= """ R
* R R ."""
2
ivan[24:]
>>
' *
R R .'
Если вы оставите пустыми и начальный, и конечный индексы, то после из- влечения среза получите исходный объект.
Python_ex192.py1
ivan
= """ R -
* R R ."""
2 ivan[:]
>>
' R *
R R .'
Словарь терминовИзвлечение среза: способ вернуть новый итерируемый объект, состоящий из подмножества элементов другого итерируемого объекта.
Конечный индекс: индекс, на котором заканчивается извлечение среза.
Начальный индекс: индекс, с которого начинается извлечение среза.
Отрицательный индекс: индекс (должен быть отрицательным числом), кото- рый используется для нахождения элементов в
итерируемом объекте справа на- лево, а не слева направо.
Управляющие символы: сообщают Python, что знак, перед которым они по- мещены, в данном случае не имеет специального значения, а предназначен для представления обычного символа.
Практикум1. Выведите каждый символ в строке «Чехов».
2. Напишите программу, которая принимает от пользователя две строки, встав- ляет их в строку " _ . G
_ !"
и выводит новую строку.
3. Используйте метод, чтобы исправить грамматическую ошибку в строке " -
1894 ."
, сделав первую букву в первом слове предложения прописной.
4. Вызовите метод, который превращает строку " ? ?
?"
в список [" ?", " ?", " ?"].
83Введение в программирование
5. Превратите список
["A& ", " ", " ", "B",
" B", "B ", "."]
в грамматически правильное предложение.
Каждое слово должно отделяться пробелом, но между словом «забор» и сле- дующей за ним точкой пробела быть не должно. (Не забывайте, вы выучили метод, превращающий список строк в единую строку.)
6. Замените каждое вхождение буквы " " в строке "A — B -
."
цифрой 0.
7. Используйте метод, чтобы определить индекс символа "" в строке "-
"
8. Найдите в своей любимой книге диалог (с кавычками) и превратите его в строку.
9. Создайте строку «тритритри», используя конкатенацию , а затем сделайте то же самое, только с помощью умножения.
10. Извлеките срез строки «И незачем так орать! Я и в первый раз прекра сно слышал.» так, чтобы она содержала только символы до восклицательного знака.
Решения:
chap6_challenge1.py — chap6_challenge10.py.
Глава 7. ЦиклыВосемьдесят процентов успеха — это просто прийти.
Вуди АлленОдна из программ, представленных в этой книге, сто раз выводила пользовате- лю строку , !. Это осуществлялось при помощи цикла — фрагмента кода, непрерывно выполняющего инструкции, пока удовлетворено определен- ное в коде условие. В этой главе вы узнаете о циклах и о том, как их использо- вать.
Циклы forВ этом разделе вы узнаете, как использовать
for — цикл, перебирающий итери- руемый объект. Процесс перебора называется
итерированием . Цикл for мож- но использовать, чтобы определять инструкции, которые будут выполняться один раз для каждого элемента в итерируемом объекте, и с помощью таких ин- струкций вы можете получать доступ ко всем этим элементам и осуществлять операции с ними. Например, с помощью цикла for, выполняющего перебор списка строк, и метода upper можно сделать символы каждой строки пропис- ными.
Цикл for определяется синтаксисом for _ in _-
_ : Y
, где _ –
выбранное вами имя переменной, которая назначается значению каждого элемента в итерируе- мом объекте, а Y — код, который выполняется при каждом прохожде- нии цикла. Ниже приведен пример использования цикла for для перебора (ите- рирования) символов строки.
84
Часть I
Python_ex193.py
1
name
= "K"
2
for character in name:
3
print(character)
>> K
>>
>>
При каждом прохождении цикла переменная character назначается эле- менту итерируемого объекта name. При первом прохождении выводится буква
K
, поскольку переменная character назначена первому элементу объекта name.
При втором прохождении выводится буква , ведь character назначена вто- рому элементу name. Процесс продолжается до тех пор, пока каждый элемент в итерируемом объекте не будет назначен переменной character.
Ниже приведен пример использования цикла for для перебора элемен тов списка.
Python_ex194.py
1
shows
= [" &",
2
"% ",
3
" "]
4
for show in shows:
5
print(show)
>> &
>> %
>>
Пример использования цикла for для итерирования элементов кортежа.
Python_ex195.py
1
coms
= ("K * B ",
2
"B",
3
" ")
4
for show in coms:
5
print(show)
>> K * B
>> B
>>
Пример использования цикла for для перебора ключей в словаре.
85
Введение в программирование
Python_ex196.py
1
people
= {"& ":
2
"K * B ",
3
" ":
4
" &",
5
" % * ":
6
" "
7
}
8
for character in people:
9
print(character)
>> &
>>
>> % *
При помощи цикла for можно изменять элементы в изменяемом итерируе- мом объекте, например списке.
Python_ex197.py
1
tv
= [" &",
2
"% ",
3
" "]
4
i
= 0 5
for show in tv:
6
new
= tv[i]
7
new
= new.upper()
8
tv[i]
= new
9
i
+= 1 10
print(tv)
>> [' % KQ R', '% AK$ VKAR', 'A']
В данном примере цикл for использовался для перебора списка tv. Вы от- слеживаете текущий элемент в списке с помощью переменной индекса — пере- менной, хранящей целое число, которое представляет индекс в итерируемом объекте. Значение переменной индекса i начинается с 0 и увеличивается при каждом прохождении цикла. Вы используете переменную индекса, чтобы полу- чить текущий элемент списка, который затем сохраняете в переменной new. По- сле этого вы вызываете метод upper в переменной new, сохраняете результат и используете свою переменную индекса, чтобы заменить этим результатом теку- щий элемент в списке. Наконец, вы увеличиваете i, чтобы при следующем про- хождении цикла взять следующий элемент в списке.
86
Часть I
Поскольку получение доступа к каждому элементу в итерируемом объекте и его индексу — распространенная задача, у Python для этого есть специальный синтаксис .
Python_ex198.py
1
tv
= [" &", "% ",
2
" "]
3
for i, show in enumerate(tv):
4
new
= tv[i]
5
new
= new.upper()
6
tv[i]
= new
7
print(tv)
>> [' % KQ R', '% AK$ VKAR', 'A']
Вместо перебора списка tv вы передали список tv в enumerate и выполни- ли перебор результата, что позволило ввести новую переменную i, отслеживаю- щую текущий индекс.
Циклы for можно использовать для перемещения данных между изменяе- мыми итерируемыми объектами. Например, вы можете использовать два цикла for
, чтобы взять все строки из двух разных списков, сделать прописными все символы в этих строках и поместить измененные строки в новый список.
Python_ex199.py
1
tv
= [" &", "% ",
2
" "]
3
coms
= ["K * B ",
4
"B",
5
" "]
6
all_shows
= []
7
for show in tv:
8
show
= show.upper()
9
all_shows.append(show)
10
for show in coms:
11
show
= show.upper()
12
all_shows.append(show)
13
print(all_shows)
>>
[' % KQ R', '% AK$ VKAR', 'A', 'KARQ
A', 'A|Q', 'R$ H R']
87Введение в программирование
В этом примере присутствуют три списка: tv, coms и all_shows. Пер- вый цикл перебирает все элементы списка tv, при этом вы используете метод upper
, чтобы сделать буквы прописными, и метод append, чтобы добавить их все в список all_shows. Во втором цикле вы делаете то же самое со списком coms
. Когда выводится список all_shows, он содержит все элементы обоих списков, и каждый из этих элементов представляет собой слова прописными буквами.
Функция rangeМожно использовать встроенную функцию range, чтобы создать последователь- ность целых чисел и цикл for
, чтобы выполнить ее перебор. Функция range принимает два параметра: число, с которого последовательность начинается, и число, на котором она заканчивается. Последовательность целых чисел, возвра- щаемая функцией range, включает в себя первый параметр (число, с которого нужно начать), но не включает второй (число, на котором нужно закончить).
Ниже приведен пример использования функции range для создания последова- тельности чисел и их перебора.
Python_ex200.py1
for i
in range(1, 11):
2
print(i)
>> 1
>> 9
>> 10
В этом примере вы использовали цикл for, чтобы вывести все числа в ите- рируемом объекте, которые возвращаются функцией range.
Программисты ча- сто присваивают переменной, используемой для перебора списка целых чисел, имя i.
Циклы whileВ данном разделе вы узнаете, как использовать
цикл while , выполняющий код до тех пор, пока выражение принимает истинно (True). Синтаксис цикла while следующий: while & :
_ _ .
опреде- ляет, будет цикл продолжаться или нет, а
_ _ должен выпол- няться циклом.
Python_ex201.py1
x
= 10 2
while x > 0:
3
print('{}'.format(x))
4
x
-= 1 5 print("% $ !")
88
Часть I
>> 10
>> 9
>> 8
>> 7
>> 6
>> 5
>> 4
>> 3
>> 2
>> 1
>> % $ !
Ваш цикл while выполняет свой код до тех пор, пока выражение, опреде- ленное в его заголовке, x > 0, истинно — принимает значение True. При пер- вом прохождении цикла x равен 10, и выражение x > 0 принимает значение
True
. Цикл while выводит значение x, затем уменьшает x на 1. Теперь x ра- вен 9. В следующий раз снова выводится x, и он уменьшается до 8. Этот процесс продолжается, пока x не уменьшится до 0, здесь выражение x > 0 примет значе- ние False, и тогда ваш цикл завершится. Затем Python выполнит следующую за циклом строку кода и выведет строку % $ !.
Если вы определите цикл while с помощью выражения, всегда принима- ющего значение True, ваш цикл будет выполняться вечно. Цикл, который ни- когда не завершается, называется бесконечным циклом . Ниже приведен при- мер бесконечного цикла (будьте готовы нажать на клавиатуре сочетание клавиш
Ctrl+C, чтобы прекратить выполнение цикла).
Python_ex202.py
1
while
True
:
2
print(", !")
>> , !
Поскольку цикл while выполняется, пока выражение, определенное в его заг оловке, истинно, — а выражение True истинно всегда, — этот цикл будет вы- полняться вечно.
Инструкция break
Вы можете использовать инструкцию break — инструкцию с ключевым словом break,
— чтобы прекратить цикл. Следующий цикл выполнится сто раз.
Python_ex203.py
1
for i in range(0, 100):
2
print(i)
89Введение в программирование
>> 0
>> 1
Если вы добавите инструкцию break, цикл выполнится лишь один раз.
Python_ex204.py1
for i
in range(0, 100):
2
print(i)
3
break>> 0
Как только Python сталкивается с инструкцией break, цикл завершается. Вы можете использовать цикл while и ключевое слово break для написания про- граммы, которая
будет просить пользователя ввести данные, пока он не введет букву , чтобы выйти.
Python_ex205.py1
qs
= [" B ?",
2
"K W Y?",
3
"H *?"]
4
n
= 0 5
while True
:
6
print(" G ")
7
a
= input(qs[n])
8
if a
== "":
9
break10
n
= (n
+ 1)
% 3
>> G
>> B ?
При каждом прохождении цикла ваша программа задает пользователю один из вопросов из списка qs.
n
— переменная индекса. При каждом прохождении цикла вы присваиваете n
значение выражения (n + 1) % 3, что позволяет бесконечно проходить по каждому вопросу в списке qs. При первом прохождении цикла n начинает с 0.
Затем n присваивается значение выражения (0 + 1) % 3, которое равно 1. По- сле чего n присваивается значение (1 + 1) % 3, которое равно 2, ведь всегда, когда первое число в выражении с оператором деления по модулю меньше вто- рого, ответом является это первое число. Наконец, n присваивается значение
(2 + 1) % 3
, равное 0, как и в начале.
90
Часть I
Инструкция continue
Вы можете использовать инструкцию continue, чтобы прервать текущую ите- рацию цикла и продолжить со следующей итерации. Скажем, вам нужно вывести все числа от 1 до 5, кроме числа 3. Вы можете это осуществить, используя цикл for и инструкцию continue.
Python_ex206.py
1
for i in range(1, 6):
2
if i == 3:
3
continue
4
print(i)
>> 1
>> 2
>> 4
>> 5
В этом цикле, когда переменная i принимает значение 3, выполняется ин- струкция continue — тогда вместо того, чтобы полностью завершиться, как в случае с ключевым словом break, цикл продолжает работать. Он переходит к следующей итерации, пропуская код, который должен был выполниться. Когда переменная i принимает значение 3, Python выполняет инструкцию continue, а не выводит число 3.
Аналогичного результата можно достичь при помощи цикла while и ин- струкции continue.
Python_ex207.py
1
i
= 1 2
while i <= 5:
3
if i == 3:
4
i
+= 1 5
continue
6
print(i)
7
i
+= 1
>> 1
>> 2
>> 4
>> 5
Вложенные циклы
Вы можете различными способами комбинировать циклы. Например, можно поместить один цикл в другой, или создать цикл внутри цикла внутри цикла. Нет никаких ограничений по количеству циклов, которые можно помещать внутрь
91Введение в программирование других циклов, хотя эти ограничения важны. Когда цикл находится внутри дру- гого цикла, второй цикл является вложенным в первый. В этом случае цикл, содержащий внутри другой цикл, называется
внешним, а вложенный цикл —
внутренним. Когда у вас есть вложенный цикл, внутренний цикл выполняет пе- ребор своего итерируемого объекта один раз за итерацию внешнего цикла.
Python_ex208.py1
for i
in range(1, 3):
2
print(i)
3
for letter
in [" ", "", ""]:
4
print(letter)
>> 1
>>
>>
>>
>> 2
>>
>>
>>
Вложенный цикл for будет перебирать список [" ", "", ""] столь- ко раз, сколько раз выполняется внешний цикл — в нашем случае дважды. Если бы вы сделали так,
чтобы внешний цикл выполнялся три раза, то и внутренний цикл также перебирал бы свой список трижды.
Вы можете использовать циклы for для прибавления каждого числа из одно- го списка к каждому числу из другого списка.
Python_ex209.py1
list1
= [1, 2, 3, 4]
2
list2
= [5, 6, 7, 8]
3
added
= []
4
for i
in list1:
5
for j
in list2:
6
a dded.append(i
+ j)
7
print(added)
>>
[6, 7, 8, 9, 7, 8, 9, 10, 8, 9, 10, 11, 9, 10, 11, 12]
Первый цикл выполняет итерирование каждого целого числа в списке list1
. Для каждого элемента в этом списке второй цикл перебирает каждое це- лое число в собственном итерируемом объекте, затем прибавляет его к числу из list1
и добавляет результат в список added. Во втором цикле for я назвал пере- менную j, поскольку имя i уже было занято в первом цикле.
92
Часть I
Вы можете вкладывать цикл for внутрь цикла while и наоборот.
Python_ex210.py
1
while input(' ?') !
= ' ':
2
for i in range(1, 6):
3
print(i)
>>
?
>> 1
>> 2
>> 3
>> 4
>> 5
>>
?
>> 1
>> 2
>> 3
>> 4
>> 5
>>
?
Программа будет выводить числа от 1 до 5, пока пользователь не введет .
Словарь терминов
Бесконечный цикл: цикл, который никогда не завершается.
Внешний цикл: цикл, содержащий вложенный цикл.
Внутренний цикл: цикл, вложенный в другой цикл.
Инструкция break: инструкция с ключевым словом break, использующаяся для прекращения цикла.
Инструкция continue: инструкция с ключевым словом continue, использую- щаяся, чтобы прервать текущую итерацию цикла и продолжить со следующей итерации.
Итерирование (перебор): использование цикла для получения доступа к каждо- му элементу итерируемого объекта.
Переменная индекса: переменная, хранящая целое число, которое представля- ет индекс в итерируемом объекте.
Цикл for: цикл, перебирающий итерируемый объект — например, строку, спи- сок, кортеж или словарь.
Цикл while: цикл, выполняющий код до тех пор, пока выражение принимает значение True.
Цикл: фрагмент кода, непрерывно выполняющий инструкции, пока удовлетво- рено определенное в коде условие.
93Введение в программирование
Практикум1. Выведите каждый элемент в следующем списке: [" Y",
" Y", " % ", " "]
2. Выведите все числа от 25 до 50.
3. Выведите каждый элемент в списке из первого задания вместе с индексами.
4. Напишите программу с бесконечным циклом (с возможностью ввести букву
, чтобы выйти) и списком чисел. При каждом переборе цикла предлагайте пользователю отгадать число из списка и сообщайте, правильно ли он отга- дал.
5. Умножьте все числа в списке [8, 19, 148, 4] на все числа в списке [9,
1, 33, 83]
и поместите результаты в третий список.
Решения: chap7_challenge1.py — chap7_challenge5.py.