Главная страница

Сам_себе_программист._Как_научиться_программировать_и_устроиться. Guide to Programming Professionally


Скачать 3.94 Mb.
НазваниеGuide to Programming Professionally
Дата25.02.2023
Размер3.94 Mb.
Формат файлаpdf
Имя файлаСам_себе_программист._Как_научиться_программировать_и_устроиться.pdf
ТипGuide
#954463
страница6 из 15
1   2   3   4   5   6   7   8   9   ...   15

Глава 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.py
1
author
= " ƒ "
2
author[5]
>> IndexError: string index out of range
Python также позволяет извлекать элементы из списка с помощью отрица-
тельного индекса (должен быть отрицательным числом), то есть индекса, ко- торый находит элементы в итерируемом объекте справа налево, а не слева на- право. Чтобы получить доступ к последнему элементу в итерируемом объекте, используйте отрицательный индекс ‹1.
Python_ex157.py
1
author
= " ƒ "
2
author[-1]
>> ' '
Отрицательный индекс ‹2 находит предпоследний элемент, отрицательный индекс ‹3 — элемент, третий с конца, и так далее.
Python_ex158.py
1
author
= " ƒ "
2
author[-2]
3
author[-3]
>> ''
>> 'ƒ'
Строки неизменяемы
Как и кортежи, строки неизменяемы . Нельзя изменять символы в строке – если вы хотите это сделать, нужно создавать новую строку.
Python_ex159.py
1
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 AŽK%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.py
1
words
= ["A& ",
2
"Y ",
3
"  ",
4
" ",
5
"B",
6
"  ",
7
"."]
8
one
= " ".join(words)
9
one
>> 'A&  Y     B    .'
Метод strip
Метод strip используется для удаления пробельных символов в начале и конце строки.
Python_ex174.py
1
s
= " V  "
2
s
= s.strip()
3
s
>> 'V  '
Метод replace
Метод replace заменяет каждое вхождение строки другой строкой. Первый па- раметр — строка, которую нужно заменить, второй — строка, которой нужно за- менить вхождения.
Python_ex175.py
1
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.py
1
ivan
= """ R           
  *         R R ."""
2
ivan[24:]
>>
'          *        
R R .'
Если вы оставите пустыми и начальный, и конечный индексы, то после из- влечения среза получите исходный объект.
Python_ex192.py
1
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Œ', '%Œ AŒK$’Œ VKŒAR’', '†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Œ', '%Œ AŒK$’Œ VKŒAR’', '†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Œ', '%Œ AŒK$’Œ VKŒAR’', '†A‡', 'KŒARQ
‚“‡ ˆ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.py
1
for i in range(1, 11):
2
print(i)
>> 1
>> 9
>> 10
В этом примере вы использовали цикл for, чтобы вывести все числа в ите- рируемом объекте, которые возвращаются функцией range. Программисты ча- сто присваивают переменной, используемой для перебора списка целых чисел, имя i.
Циклы while
В данном разделе вы узнаете, как использовать цикл while
, выполняющий код до тех пор, пока выражение принимает истинно (True). Синтаксис цикла while следующий: while  & : _ _ .    опреде- ляет, будет цикл продолжаться или нет, а _ _ должен выпол- няться циклом.
Python_ex201.py
1
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.py
1
for i in range(0, 100):
2
print(i)
3
break
>> 0
Как только Python сталкивается с инструкцией break, цикл завершается. Вы можете использовать цикл while и ключевое слово break для написания про- граммы, которая будет просить пользователя ввести данные, пока он не введет букву , чтобы выйти.
Python_ex205.py
1
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
break
10
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.py
1
for i in range(1, 3):
2
print(i)
3
for letter in [" ", "", ""]:
4
print(letter)
>> 1
>>
>> 
>> 
>> 2
>>
>> 
>> 
Вложенный цикл for будет перебирать список [" ", "", ""] столь- ко раз, сколько раз выполняется внешний цикл — в нашем случае дважды. Если бы вы сделали так, чтобы внешний цикл выполнялся три раза, то и внутренний цикл также перебирал бы свой список трижды.
Вы можете использовать циклы for для прибавления каждого числа из одно- го списка к каждому числу из другого списка.
Python_ex209.py
1
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.
1   2   3   4   5   6   7   8   9   ...   15


написать администратору сайта