Файл: Учебное пособие по изучению языка программировани Python Л. Самыкбаева, А. Беляев, А. Палитаев, И. Ташиев, С. Маматов.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.12.2023
Просмотров: 256
Скачиваний: 7
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
letter каждый раз присваивается новый элемент из строки Python. Команда print выводит на экран каждую букву этой строки по одной:
for
letter
in
'Python'
:
print
(
'Буква:'
, letter)
>>>
Буква: P
Буква: y
Буква: t
Буква: h
Буква: o
Буква: n
СМОТРИ ТАКЖЕ
Тема 3.4
Циклы while и for
7 класс
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PY THON
26
В примере ниже с каждым новым проходом значение переменной увели- чивается на число из заданного диапазона:
f = 12
for
i
in
range
(1,6):
f = f + i
print
(f)
>>>
27
Цикл «for i in range(1,6)» выполняется пять раз (6 – не включается). На ка- ждом шаге цикла переменная f увеличивается на i. Первоначальное значе- ние f = 12. В цикле значение изменяется:
1 проход: f = 12+1=13 2 проход: f = 13 +2=15 3 проход: f = 15+3=18 4 проход: f = 18+4=22 5 проход: f = 22+5=27
Кратко можно записать так: f = 12 + 1 + 2 + 3 + 4 + 5 = 27
Аргументы для функции range передаются следующим образом:
• range(x) – перебирает все значения от 0 до x; при этом число x не включается в диапазон;
• range(y, x) – перебирает все значения от y до x;
x также не включается в диапазон;
• range(y, x, s) – перебирает значения от y до x, с шагом s.
Например:
for
i
in
range
(0,15,3):
print
(i)
В данном случае цикл for переберет значения от 0 до 15 с шагом 3, в ре- зультате он выведет каждое третье число:
>>>
0
3
6
9
12
Также в качестве шага можно использовать отрицательные числа, тогда цикл будет перебирать значения в обратном направлении:
27
ЦИК ЛИЧЕСКИЕ А ЛГОРИТМЫ
for
i
in
range
(100,0,-10):
print
(i)
>>>
100
80
60
40
20
В отличие от цикла for, который повторяет последовательность определен- ное количество раз, цикл while руководствуется не количеством, а логиче- ским условием, потому вам не нужно точно знать, сколько раз необходимо выполнить код.
Код цикла while будет повторяться до тех пор, пока логическое условие истинно (True).
Задача 1. Давайте попробуем на основе этого цикла написать игру, в кото- рой пользователь должен угадать число, загаданное компьютером. Напи- шем программу:
import
random
#загрузим библиотеку случайных чисел
number = random.randint(1, 25)
#выбор компьютером случайного числа
choices = 0
#в переменную choices записываем количество попыток
while
choices < 5:
#выполняет цикл до 5 попыток
print
(
'Угадай число между 1 and 25:'
)
#предлагает пользо-
вателю ввести число
guess =
input
()
guess =
int
(guess)
#число должно быть целым
choices = choices + 1
#с каждой попыткой счет увеличивается на 1
if guess == number:
#если введенное число равно загаданному
break
#остановить программу
Переменной choices присвоено значение 0, которое будет увеличиваться с каждой попыткой угадать число. Мы ограничим программу 5-ю попытками, чтобы программа не попала в бесконечный цикл.
Программа уже работает, но она не сообщает пользователю никаких ре- зультатов: пользователь не знает, угадал он число или нет. Результат выгля- дит так:
Угадай число между 1 and 25:
5
Угадай число между 1 and 25:
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PY THON
28
16
Угадай число между 1 and 25:
7
Угадай число между 1 and 25:
18
Угадай число между 1 and 25:
10
>>>
Для этого введем условные операторы, которые будут сообщать пользова- телю, что его число меньше или больше загаданного, и это поможет угадать число быстрее:
import
random
number = random.randint(1, 25)
choices = 0
while
choices < 5:
print
(
'Угадай число между 1 and 25:'
)
guess =
input
()
guess =
int
(guess)
choices = choices + 1
if
guess < number:
#если число пользователя меньше загаданного
print
(
'Мое число больше твоего'
)
if
guess > number:
#если число пользователя больше загаданного
print
(
'Мое число меньше твоего'
)
if
guess == number:
#если число пользователя равно загаданному
break
if
guess == number:
print
(
'Молодец! Ты угадал число с'
+ str(choices) +
'попытки!'
)
else
:
print
(
'К сожалению, ты не угадал число. Я загадал'
+ str(number))
Если запустить программу, то вариант общения с пользователем будет такой:
Угадай число между 1 and 25:
6
Мое число больше твоего
Угадай число между 1 and 25:
17
Мое число меньше твоего
Угадай число между 1 and 25
:
29
ЦИК ЛИЧЕСКИЕ А ЛГОРИТМЫ
14
Мое число больше твоего
Угадай число между 1 and 25:
15
Молодец! Ты угадал число с 4 попытки!
>>>
Теперь программа помогает пользователю угадать число, дает ему подсказ- ки. К примеру, если компьютер загадал число 15, а пользователь ввел 17, программа подскажет, что введенное число больше загаданного.
1) Запишите значение переменной y, полученное в результате работы следующей программы.
y = 5
for
i
in
range
(2,6):
y = y + 4 * i
print
(y)
2) Дан брусок длиной 20 метров. Напишите программу, которая посчитает, какое минимальное целое количество отрезков дли
ной 1,5 м и 2 м получится из данного бруска.
3) По данному коду запишите в таблицу значения переменных на каждом шаге алгоритма: k=4 p=1040 m=2
while
p != m*m:
k=k+1
p=p-4
m=m*2
print
(k)
4) У героя Майнкрафта Алекса есть машина, которая выпускает по 4 минерала в минуту. На каждые 100 минералов можно пост
роить новую машину, которая также выпускает по 4 минерала в минуту. Напишите программу, которая вычислит, сколько машин будет у Алекса через час.
ВОПРОСЫ И ЗАДАНИЯ:
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PY THON
30
8. Тема:
Вложенные условные операции и циклы
В 7 классе мы уже изучали, как работают условные операторы
if
и
else
, которые реализуют в программе две отдельные ветви выполнения. Одна- ко алгоритм программы может предполагать выбор больше, чем из двух путей, например, из трех, четырех или даже больше.
Внутри условного оператора могут находиться любые операторы, в том числе и другие условные операторы. Например, у нас есть показания датчика температуры из печи, требуется определить, высокая она, низкая или в пределах нормы. Нормальной считается температура в диапазоне от
200 до 250 градусов Цельсия. В переменной t хранится температура. Один условный оператор не подойдет, потому что есть три возможных результа- та. Решение задачи можно записать так:
t =
int
(
input
(
'Введите температуру'
))
if
t > 250:
print
(
'Температура в печи очень высокая'
)
else
:
if
200 <= t <= 250:
print
(
'Температура в печи в пределах нормы'
)
else
:
print
(
'Температура в печи ниже нормы'
)
Условный оператор
if
, проверяющий равенство, находится внутри блока
else (иначе)
, поэтому он называется вложенным условным оператором.
Как видно из этого примера, использование вложенных условных опера- торов позволяет выбрать один из нескольких вариантов. Если после
else
сразу следует еще один оператор
if
, можно использовать «каскадное» вет- вление с ключевыми словами
elif
(сокращение от
else-if
). Рассмотрим задачу, в которой потребуется «каскадное» ветвление: требуется опреде- лить четверть координатной плоскости по заданным координатам x и y.
В переменных x и y хранятся целочисленные значения координат, введен- ные с клавиатуры.
x =
int
(
input
())
y =
int
(
input
())
if
x > 0
and
y > 0:
31
В ЛОЖЕННЫЕ УС ЛОВНЫЕ ОПЕРАЦИИ И ЦИК ЛЫ
print
(
'Первая четверть'
)
elif
x > 0
and
y < 0:
print
(
'Четвертая четверть'
)
elif
y > 0:
print
(
'Вторая четверть'
)
else
:
print
(
'Третья четверть'
)
В приведенной программе условия
if, ..., elif
проверяются по оче- реди и выполняется блок, соответствующий первому из истинных условий.
Если все проверяемые условия ложны, то выполняется блок
else
, если он присутствует.
Вложенные циклы
В сложных задачах часто бывает так, что на каждом шаге цикла нужно вы- полнять обработку данных, которая также представляет собой цикличес- кий алгоритм. В этом случае получается конструкция «цикл в цикле» или
«вложенный цикл».
Цикл называется вложенным, если он размещается внутри другого цикла.
На первом проходе внешний цикл вызывает внутренний, который испол- няется до своего завершения, после чего управление передается в тело внешнего цикла. На втором проходе внешний цикл опять вызывает вну- тренний. И так до тех пор, пока не завершится внешний цикл.
Задача 1. Выведем на экран таблицу умножения. Для этого во внешнем цикле надо перебрать числа от 1 до 9. Для каждого из них нужно перебрать во внутреннем цикле числа от 1 до 9.
1
2 3 4 5 6 7 8 9
2
4 6 8 10 12 14 16 18
При этом во внутреннем цикле нужно выполнить умножение переменных счетчиков внешнего и внутреннего цикла первого ряда.
Таким образом, на одно выполнение внешнего цикла произойдет девять выполнений внутреннего, и сформируется одна строка таблицы умноже- ния. После каждой строки надо перейти на новую: это делается во внеш- нем цикле, после того как закончится выполняться внутренний.
На одну синюю цифру приходится один ряд черных цифр до 9-ти. Синие
1 и 2 находятся во внешнем цикле, черные цифры во внутреннем.
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PY THON
32
Также для построения таблицы необходимо использовать форматирован- ный вывод, т.е. задавать ширину столбцов (\t), иначе произойдет сдвиг, т.к. количество цифр в каждой строке различно.
Наш код будет выглядеть так:
for
i
in
range
(1,10):
#первый множитель от 1 до 10
for
j
in
range
(1,10):
#второй множитель от 1 до 10
print
(i*j, end=
'\t'
)
print
()
Результат:
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
Задача 2. Составим программу нахождения всех простых чисел в интерва- ле от 2 до 100.
Простое число – это число, которое делится без остатка только на 1 и на само на себя. Например, число 5 – простое, так как его можно нацело раз- делить только на 5 и 1, а число 6 – составное, так как помимо 6 и 1 делится на 2 и 3.
• Единица не является простым числом, поэтому в нашем примере диа- пазон начинается с цифры 2.
• Согласно условию, если число
n
не имеет делителей в диапазоне от
2 до
n
-1
, то оно простое, а если хотя бы один делитель в этом интервале найден, то составное.
• Проверим делимость числа
n
на некоторое число
k
: если остаток равен нулю, то
n
делится на
k
• Когда найден хотя бы один делитель, число уже заведомо составное, и искать другие делители в данной задаче не требуется. Для этого при
n%k
== 0
выполняется досрочный выход из цикла с помощью оператора
break
• Переменная flag показывает, есть ли хоть один делитель у числа.
33
В ЛОЖЕННЫЕ УС ЛОВНЫЕ ОПЕРАЦИИ И ЦИК ЛЫ
Таким образом, программу можно запи- сать так (здесь
n, k
– целочисленные переменные):
for
n
in
range
(2,101):
flag =
False
for
k
in
range
(2,n):
if
n % k == 0:
flag =
True
break
if not
flag:
print
(n)
Задача 3. Нарисуем на экране «прямоугольник» из двух видов символов.
Края прямоугольника будут отрисованы символом «0», а внутренняя часть символом «1».
Пусть длина прямоугольника будет равна 10 символам, а ширина 7. Внеш- ний цикл, перебирая строки, первой и последней цифрой должен поста- вить 0. Если строка первая или последняя (поскольку отсчет идет от 0, то это 0-я и 6-я строка), 0 выстраивается от начала и до конца. Во всех осталь- ных случаях – ставим цифру 1. Запишем программу:
for
i
in
range
(7):
#выводим строку 7 раз
if
i==0
or
i==6:
#если строка 1-ая или последняя
for
j
in
range
(20):
#все 20 раз
print
(
'0'
,end=
''
)
#выводим 0
else
:
#иначе
print
(
'0'
,end=
''
)
#выводим 0
for
j
in
range
(1,19):
#кроме 1-ого и 19-ого которые
print
(
'l'
,end=
''
)
#выводим цифрой 1
print
(
'0'
,end=
''
)
print
()
ВОПРОСЫ И ЗАДАНИЯ:
Чтобы цикл повторился n раз, последним числом диапазона должно быть n+1
ЗАПОМНИ
1) Напишите программу, которая получает номер месяца и выво
дит соответствующее ему время года или сообщение об ошибке.
2) Даны ящики, которые вмещают 5 кг, 10 кг и 15 кг яблок. Необхо
димо выяснить, сколько ящиков разного размера понадобится для того, чтобы распределить 100 кг яблок.
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PY THON
34
9. Тема:
Функции
Ранее вы уже использовали встроенные в интерпретатор функции:
print()
– выводит на печать данные, заключенные в круглые скобки;
str()
– преобразует данные к строковому типу;
int()
– преобразует данные к целому числу;
float()
– преобразует целые числа в дробный тип;
round()
– округляет число в большую по модулю сторону.
Кроме них мы можем создавать свои собственные функции для выполне- ния тех или иных задач. Для этого в Python предусмотрена возможность, когда некоторый повторяющийся алгоритм (или его фрагмент) оформляет- ся в отдельную функцию.
Для этого новой функции необходимо присвоить имя и описать его ал- горитм. В дальнейшем, при упоминании в программе имени функции, запускается соответствующий алгоритм со списком входных и выходных данных. После выполнения функции работа продолжается с той команды, которая непосредственно следует за вызовом функции.
Предположим, что в нескольких местах программы требуется выводить на экран сообщение об ошибке: «Ошибка в программе». Это можно сделать, например, так:
print
(
'Ошибка в программе'
)
Вставка этого оператора вывода везде, где нужно вывести сообщение об ошибке, приведет к загруженности памяти. Если потребуется поменять текст сообщения, то нужно будет искать эти операторы вывода по всей программе. Именно для таких случаев используются функции – вспомога- тельные алгоритмы, к которым можно обратиться с другого места програм- мы. Запишем функцию
error:
def
error
():
print
(
'Ошибка в программе'
)
n =
int
(
input
())
if
n < 0:
error
()
Мы ввели новую функцию
error.
35
ФУНКЦИИ
Имя функции начинается с ключевого слова
def
(от англ. define – опреде- лить), после которого задается уникальное название функции (например,
def
sum
). После имени функции ставятся скобки, в которых можно передавать параметры функции и двоеточие. Тело функции записывается с отступом.
Для того чтобы функция заработала в другом месте программы, необходи- мо ее вызвать по имени (не забыв скобки). Например,
for
letter
in
'Python'
:
(
'Буква:'
, letter)
>>>
Буква: P
Буква: y
Буква: t
Буква: h
Буква: o
Буква: n
СМОТРИ ТАКЖЕ
Тема 3.4
Циклы while и for
7 класс
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PY THON
26
В примере ниже с каждым новым проходом значение переменной увели- чивается на число из заданного диапазона:
f = 12
for
i
in
range
(1,6):
f = f + i
(f)
>>>
27
Цикл «for i in range(1,6)» выполняется пять раз (6 – не включается). На ка- ждом шаге цикла переменная f увеличивается на i. Первоначальное значе- ние f = 12. В цикле значение изменяется:
1 проход: f = 12+1=13 2 проход: f = 13 +2=15 3 проход: f = 15+3=18 4 проход: f = 18+4=22 5 проход: f = 22+5=27
Кратко можно записать так: f = 12 + 1 + 2 + 3 + 4 + 5 = 27
Аргументы для функции range передаются следующим образом:
• range(x) – перебирает все значения от 0 до x; при этом число x не включается в диапазон;
• range(y, x) – перебирает все значения от y до x;
x также не включается в диапазон;
• range(y, x, s) – перебирает значения от y до x, с шагом s.
Например:
for
i
in
range
(0,15,3):
(i)
В данном случае цикл for переберет значения от 0 до 15 с шагом 3, в ре- зультате он выведет каждое третье число:
>>>
0
3
6
9
12
Также в качестве шага можно использовать отрицательные числа, тогда цикл будет перебирать значения в обратном направлении:
27
ЦИК ЛИЧЕСКИЕ А ЛГОРИТМЫ
for
i
in
range
(100,0,-10):
(i)
>>>
100
80
60
40
20
В отличие от цикла for, который повторяет последовательность определен- ное количество раз, цикл while руководствуется не количеством, а логиче- ским условием, потому вам не нужно точно знать, сколько раз необходимо выполнить код.
Код цикла while будет повторяться до тех пор, пока логическое условие истинно (True).
Задача 1. Давайте попробуем на основе этого цикла написать игру, в кото- рой пользователь должен угадать число, загаданное компьютером. Напи- шем программу:
import
random
#загрузим библиотеку случайных чисел
number = random.randint(1, 25)
#выбор компьютером случайного числа
choices = 0
#в переменную choices записываем количество попыток
while
choices < 5:
#выполняет цикл до 5 попыток
(
'Угадай число между 1 and 25:'
)
#предлагает пользо-
вателю ввести число
guess =
input
()
guess =
int
(guess)
#число должно быть целым
choices = choices + 1
#с каждой попыткой счет увеличивается на 1
if guess == number:
#если введенное число равно загаданному
break
#остановить программу
Переменной choices присвоено значение 0, которое будет увеличиваться с каждой попыткой угадать число. Мы ограничим программу 5-ю попытками, чтобы программа не попала в бесконечный цикл.
Программа уже работает, но она не сообщает пользователю никаких ре- зультатов: пользователь не знает, угадал он число или нет. Результат выгля- дит так:
Угадай число между 1 and 25:
5
Угадай число между 1 and 25:
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PY THON
28
16
Угадай число между 1 and 25:
7
Угадай число между 1 and 25:
18
Угадай число между 1 and 25:
10
>>>
Для этого введем условные операторы, которые будут сообщать пользова- телю, что его число меньше или больше загаданного, и это поможет угадать число быстрее:
import
random
number = random.randint(1, 25)
choices = 0
while
choices < 5:
(
'Угадай число между 1 and 25:'
)
guess =
input
()
guess =
int
(guess)
choices = choices + 1
if
guess < number:
#если число пользователя меньше загаданного
(
'Мое число больше твоего'
)
if
guess > number:
#если число пользователя больше загаданного
(
'Мое число меньше твоего'
)
if
guess == number:
#если число пользователя равно загаданному
break
if
guess == number:
(
'Молодец! Ты угадал число с'
+ str(choices) +
'попытки!'
)
else
:
(
'К сожалению, ты не угадал число. Я загадал'
+ str(number))
Если запустить программу, то вариант общения с пользователем будет такой:
Угадай число между 1 and 25:
6
Мое число больше твоего
Угадай число между 1 and 25:
17
Мое число меньше твоего
Угадай число между 1 and 25
:
29
ЦИК ЛИЧЕСКИЕ А ЛГОРИТМЫ
14
Мое число больше твоего
Угадай число между 1 and 25:
15
Молодец! Ты угадал число с 4 попытки!
>>>
Теперь программа помогает пользователю угадать число, дает ему подсказ- ки. К примеру, если компьютер загадал число 15, а пользователь ввел 17, программа подскажет, что введенное число больше загаданного.
1) Запишите значение переменной y, полученное в результате работы следующей программы.
y = 5
for
i
in
range
(2,6):
y = y + 4 * i
(y)
2) Дан брусок длиной 20 метров. Напишите программу, которая посчитает, какое минимальное целое количество отрезков дли
ной 1,5 м и 2 м получится из данного бруска.
3) По данному коду запишите в таблицу значения переменных на каждом шаге алгоритма: k=4 p=1040 m=2
while
p != m*m:
k=k+1
p=p-4
m=m*2
(k)
4) У героя Майнкрафта Алекса есть машина, которая выпускает по 4 минерала в минуту. На каждые 100 минералов можно пост
роить новую машину, которая также выпускает по 4 минерала в минуту. Напишите программу, которая вычислит, сколько машин будет у Алекса через час.
ВОПРОСЫ И ЗАДАНИЯ:
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PY THON
30
8. Тема:
Вложенные условные операции и циклы
В 7 классе мы уже изучали, как работают условные операторы
if
и
else
, которые реализуют в программе две отдельные ветви выполнения. Одна- ко алгоритм программы может предполагать выбор больше, чем из двух путей, например, из трех, четырех или даже больше.
Внутри условного оператора могут находиться любые операторы, в том числе и другие условные операторы. Например, у нас есть показания датчика температуры из печи, требуется определить, высокая она, низкая или в пределах нормы. Нормальной считается температура в диапазоне от
200 до 250 градусов Цельсия. В переменной t хранится температура. Один условный оператор не подойдет, потому что есть три возможных результа- та. Решение задачи можно записать так:
t =
int
(
input
(
'Введите температуру'
))
if
t > 250:
(
'Температура в печи очень высокая'
)
else
:
if
200 <= t <= 250:
(
'Температура в печи в пределах нормы'
)
else
:
(
'Температура в печи ниже нормы'
)
Условный оператор
if
, проверяющий равенство, находится внутри блока
else (иначе)
, поэтому он называется вложенным условным оператором.
Как видно из этого примера, использование вложенных условных опера- торов позволяет выбрать один из нескольких вариантов. Если после
else
сразу следует еще один оператор
if
, можно использовать «каскадное» вет- вление с ключевыми словами
elif
(сокращение от
else-if
). Рассмотрим задачу, в которой потребуется «каскадное» ветвление: требуется опреде- лить четверть координатной плоскости по заданным координатам x и y.
В переменных x и y хранятся целочисленные значения координат, введен- ные с клавиатуры.
x =
int
(
input
())
y =
int
(
input
())
if
x > 0
and
y > 0:
31
В ЛОЖЕННЫЕ УС ЛОВНЫЕ ОПЕРАЦИИ И ЦИК ЛЫ
(
'Первая четверть'
)
elif
x > 0
and
y < 0:
(
'Четвертая четверть'
)
elif
y > 0:
(
'Вторая четверть'
)
else
:
(
'Третья четверть'
)
В приведенной программе условия
if, ..., elif
проверяются по оче- реди и выполняется блок, соответствующий первому из истинных условий.
Если все проверяемые условия ложны, то выполняется блок
else
, если он присутствует.
Вложенные циклы
В сложных задачах часто бывает так, что на каждом шаге цикла нужно вы- полнять обработку данных, которая также представляет собой цикличес- кий алгоритм. В этом случае получается конструкция «цикл в цикле» или
«вложенный цикл».
Цикл называется вложенным, если он размещается внутри другого цикла.
На первом проходе внешний цикл вызывает внутренний, который испол- няется до своего завершения, после чего управление передается в тело внешнего цикла. На втором проходе внешний цикл опять вызывает вну- тренний. И так до тех пор, пока не завершится внешний цикл.
Задача 1. Выведем на экран таблицу умножения. Для этого во внешнем цикле надо перебрать числа от 1 до 9. Для каждого из них нужно перебрать во внутреннем цикле числа от 1 до 9.
1
2 3 4 5 6 7 8 9
2
4 6 8 10 12 14 16 18
При этом во внутреннем цикле нужно выполнить умножение переменных счетчиков внешнего и внутреннего цикла первого ряда.
Таким образом, на одно выполнение внешнего цикла произойдет девять выполнений внутреннего, и сформируется одна строка таблицы умноже- ния. После каждой строки надо перейти на новую: это делается во внеш- нем цикле, после того как закончится выполняться внутренний.
На одну синюю цифру приходится один ряд черных цифр до 9-ти. Синие
1 и 2 находятся во внешнем цикле, черные цифры во внутреннем.
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PY THON
32
Также для построения таблицы необходимо использовать форматирован- ный вывод, т.е. задавать ширину столбцов (\t), иначе произойдет сдвиг, т.к. количество цифр в каждой строке различно.
Наш код будет выглядеть так:
for
i
in
range
(1,10):
#первый множитель от 1 до 10
for
j
in
range
(1,10):
#второй множитель от 1 до 10
(i*j, end=
'\t'
)
()
Результат:
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
Задача 2. Составим программу нахождения всех простых чисел в интерва- ле от 2 до 100.
Простое число – это число, которое делится без остатка только на 1 и на само на себя. Например, число 5 – простое, так как его можно нацело раз- делить только на 5 и 1, а число 6 – составное, так как помимо 6 и 1 делится на 2 и 3.
• Единица не является простым числом, поэтому в нашем примере диа- пазон начинается с цифры 2.
• Согласно условию, если число
n
не имеет делителей в диапазоне от
2 до
n
-1
, то оно простое, а если хотя бы один делитель в этом интервале найден, то составное.
• Проверим делимость числа
n
на некоторое число
k
: если остаток равен нулю, то
n
делится на
k
• Когда найден хотя бы один делитель, число уже заведомо составное, и искать другие делители в данной задаче не требуется. Для этого при
n%k
== 0
выполняется досрочный выход из цикла с помощью оператора
break
• Переменная flag показывает, есть ли хоть один делитель у числа.
33
В ЛОЖЕННЫЕ УС ЛОВНЫЕ ОПЕРАЦИИ И ЦИК ЛЫ
Таким образом, программу можно запи- сать так (здесь
n, k
– целочисленные переменные):
for
n
in
range
(2,101):
flag =
False
for
k
in
range
(2,n):
if
n % k == 0:
flag =
True
break
if not
flag:
(n)
Задача 3. Нарисуем на экране «прямоугольник» из двух видов символов.
Края прямоугольника будут отрисованы символом «0», а внутренняя часть символом «1».
Пусть длина прямоугольника будет равна 10 символам, а ширина 7. Внеш- ний цикл, перебирая строки, первой и последней цифрой должен поста- вить 0. Если строка первая или последняя (поскольку отсчет идет от 0, то это 0-я и 6-я строка), 0 выстраивается от начала и до конца. Во всех осталь- ных случаях – ставим цифру 1. Запишем программу:
for
i
in
range
(7):
#выводим строку 7 раз
if
i==0
or
i==6:
#если строка 1-ая или последняя
for
j
in
range
(20):
#все 20 раз
(
'0'
,end=
''
)
#выводим 0
else
:
#иначе
(
'0'
,end=
''
)
#выводим 0
for
j
in
range
(1,19):
#кроме 1-ого и 19-ого которые
(
'l'
,end=
''
)
#выводим цифрой 1
(
'0'
,end=
''
)
()
ВОПРОСЫ И ЗАДАНИЯ:
Чтобы цикл повторился n раз, последним числом диапазона должно быть n+1
ЗАПОМНИ
1) Напишите программу, которая получает номер месяца и выво
дит соответствующее ему время года или сообщение об ошибке.
2) Даны ящики, которые вмещают 5 кг, 10 кг и 15 кг яблок. Необхо
димо выяснить, сколько ящиков разного размера понадобится для того, чтобы распределить 100 кг яблок.
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PY THON
34
9. Тема:
Функции
Ранее вы уже использовали встроенные в интерпретатор функции:
print()
– выводит на печать данные, заключенные в круглые скобки;
str()
– преобразует данные к строковому типу;
int()
– преобразует данные к целому числу;
float()
– преобразует целые числа в дробный тип;
round()
– округляет число в большую по модулю сторону.
Кроме них мы можем создавать свои собственные функции для выполне- ния тех или иных задач. Для этого в Python предусмотрена возможность, когда некоторый повторяющийся алгоритм (или его фрагмент) оформляет- ся в отдельную функцию.
Для этого новой функции необходимо присвоить имя и описать его ал- горитм. В дальнейшем, при упоминании в программе имени функции, запускается соответствующий алгоритм со списком входных и выходных данных. После выполнения функции работа продолжается с той команды, которая непосредственно следует за вызовом функции.
Предположим, что в нескольких местах программы требуется выводить на экран сообщение об ошибке: «Ошибка в программе». Это можно сделать, например, так:
(
'Ошибка в программе'
)
Вставка этого оператора вывода везде, где нужно вывести сообщение об ошибке, приведет к загруженности памяти. Если потребуется поменять текст сообщения, то нужно будет искать эти операторы вывода по всей программе. Именно для таких случаев используются функции – вспомога- тельные алгоритмы, к которым можно обратиться с другого места програм- мы. Запишем функцию
error:
def
error
():
(
'Ошибка в программе'
)
n =
int
(
input
())
if
n < 0:
error
()
Мы ввели новую функцию
error.
35
ФУНКЦИИ
Имя функции начинается с ключевого слова
def
(от англ. define – опреде- лить), после которого задается уникальное название функции (например,
def
sum
). После имени функции ставятся скобки, в которых можно передавать параметры функции и двоеточие. Тело функции записывается с отступом.
Для того чтобы функция заработала в другом месте программы, необходи- мо ее вызвать по имени (не забыв скобки). Например,
1 2 3 4 5 6 7