Файл: Учебное пособие по изучению языка программировани Python Л. Самыкбаева, А. Беляев, А. Палитаев, И. Ташиев, С. Маматов.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.12.2023

Просмотров: 260

Скачиваний: 7

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
b
» только те элементы, которые удовлетворяют условию. А для вывода среднего роста детей в классе остается разделить сумму элементов нового списка на их количество.
КОМПЬЮТЕРНЫЙ ПРАКТИКУМ:
1) В списке хранятся оценки учеников. Напишите программу, которая выводит номера элементов списка, равных введенной с клавиатуры оценке.
2) На физкультуре рост учеников записали в список. Найдите в этом списке ученика с самым высоким и низким ростом.

45
С ТРОКИ И ОПЕРАЦИИ С НИМИ
11. Тема:
Строки и операции с ними
Изначально компьютеры использовались как вычислительные машины, тогда как сейчас их главной задачей становится обработка текстовой ин- формации. Основной тип данных для работы с текстом в языке Python – это строки (тип str) от англ. string.
Строка – это последовательность символов, заключенных в одинарные или двойные кавычки:
'Это строка'
=
"Это строка"
В отличие от списков (массивов), строки не относятся к структурам данных.
При этом строки можно рассматривать как упорядоченную последователь- ность элементов, с которыми можно работать так же, как и с элементами в списках.
>>> s =
'Это строка'
>>> s[0]
#возвращает элементы под указанным индексом
'Э'
>>> s[5:]
#возвращает элементы с 5-индекса и до последнего
'трока'
Однако строки в Python неизменяемы. То есть нельзя заменить какой-то отдельный элемент строки на другой. В этом случае программа выдаст ошибку.
Можно составить из символов существующей строки новую строку, и при этом внести нужные изменения. Приведем полную программу, которая вводит строку с клавиатуры, заменяет в ней все буквы «a» на буквы «б» и выводит полученную строку на экран.
s = input(
'Введите строку: '
)
s1 = ''
for
c
in
s:
#перебирает все символы в строке s
if
c ==
'а'
:
#если значение переменной совпадает с «а»
c =
'б'
#то заменяем ее на букву «б»
s1 = s1 + c
print
(s1)
Однако этот способ работает очень медленно. В практических задачах, где требуется замена символов, лучше использовать встроенный метод
replace

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PY THON
46
Кроме этого часто требуется строку текста обработать: получить часть этой строки (подстроку), объединить две строки в одну, либо удалить часть строки. Например, для
объединения (сцепления) строк используется оператор '+'. Эта операция называется конкатенация:
s1 =
'Добрый'
s2 =
'день'
s = s1 +
' '
+ s2 +
'!'
print
(s)
>>>
Добрый день!
Использование срезов для обработки строк
В языке Python часто используются срезы (англ. slicing), которые обозна- чают определенный участок строки для обработки. Запись среза выглядит так: [X:Y]. X – начало среза, а Y – окончание. Символ с номером Y в срез не входит. По умолчанию первый индекс равен 0, а второй – длине строки.
Например, s[3:8] означает символы строки s с 3-го по 7-й (то есть до 8-го, не включая его).
Длина строки определяется с помощью свойства строки len (англ. length – длина). Для этого в переменную n записы- вается длина строки s, которая выдает количество знаков вме- сте с пробелами (целое число):
n = len(s)
ВСПОМНИ


47
С ТРОКИ И ОПЕРАЦИИ С НИМИ
Методы строк
В Python есть множество встроенных методов для работы со строками.
Рассмотрим наиболее интересные из них.
1) Методы
upper и lower позволяют перевести строку соответственно в верхний и нижний регистр, метод title переводит только первые буквы в верхний регистр, а все остальные в нижний:
s =
'aAbB cC'
s1 = s.upper()
#'AABB CC'
s2 = s.lower()
#'aabb cc'
s2 = s.title()
#'Aabb Cc'
2) Метод
split позволяет разбить строку по пробелам. В результате получается список из слов. Если пользователь вводит в одной строке ряд слов или чисел, каждое из которых должно в программе обрабатываться отдельно (как в списках), то без split() не обойтись:
s =
'Понедельник Вторник Среда Четверг Пятница'
s1 = s.split ()
#['Понедельник', 'Вторник', 'Среда', 'Чет-
верг', 'Пятница']
3) Метод
join, наоборот, формирует из списка строку. Для этого впере- ди ставится строка-разделитель, а в скобках передается список:
s = [
'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница'
]
s1 = '-'.join (s)
#Понедельник-Вторник-Среда-Четверг-Пятница
4) Метод find работает с подстроками. Он ищет подстроку в строке и возвращает индекс первого элемента найденной подстроки. Если подстро- ка не найдена, то возвращает -1.
s =
'Понедельник Вторник Среда Четверг Пятница'
s1 = s.find ('Среда')
#ответ: 20, индекс буквы «С», первого
элемента в подстроке
Также этим методом можно найти номер индекса элемента строки в задан- ном срезе. Для того чтобы указать срез, нужно указать его начало и конец цифрами через запятую. Если вторая цифра не указана, то поиск ведется до конца строки:
s2 = s.find (
'н'
, 4)
#8, индекс первого «н», в отрезке с
4-ого индекса и до конца

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PY THON
48
s1 = s.find (
'н'
, 0, 9)
#2, индекс первого «н», в отрезке от
начала и 9-ого индекса
5)
Метод replace заменяет одну подстроку на другую. При этом исход- ная строка не меняется, а модифицируется новая строка, которая присваи- вается новой переменной s1:
s =
'Понедельник Вторник Среда Четверг Пятница'
s1 = s.replace (
'н'
,
'N'
)
#ПоNедельNик ВторNик Среда Четверг
ПятNица
Иногда нам нужно разделить строку, чтобы ее часть выводилась с новой строки, тогда мы используем знак \n:
print (
'Понедельник \n Вторник \n Среда \n Четверг'
)
#все
слова выведутся в столбик
Если новую строку нужно вывести с отступом, тогда используем знак \t:
print (
'Понедельник \n\t Вторник \n\t Среда'
)
#все слова выве-
дутся в столбик, каждая новая строка напечатается с отступом
Рассмотрим пример обработки строк с использованием изученных выше команд.
Задача 1. С клавиатуры вводится строка, содержащая имя, отчество и фа- милию человека, например:
Айтматов Чынгыз Торекулович
Каждые два слова разделены одним пробелом, в начале строки пробелов нет. В результате обработки должна получиться новая строка, содержащая фамилию и инициалы:
Айтматов Ч.Т.
Решение:
1)
Введем строку с клавиатуры:
s = input(
'Введите фамилию, имя и отчество: '
)
2)
Разобьем введенную строку на отдельные слова, которые разделе- ны пробелами. Для этого используем метод split. В этом списке будут три элемента: fio[0] – фамилия, fio[1] – имя и fio[2] – отчество:
fio = s.split()


49
С ТРОКИ И ОПЕРАЦИИ С НИМИ
3)
Соберем фамилию с инициалами:
fioshort = fio[0]+
' '
+fio[1][0]+
'.'
+ fio[2][0]+
'.'
Полная программа будет выглядеть так:
s =
input
('
Введите фамилию, имя и отчество: '
)
fio = s.split ()
fioshort = fio[0] + ' ' + fio[1][0] + '.' + fio[2][0] + '.'
print
(fioshort)
Сравнение и сортировка строк
Мы пользуемся сортировкой по алфавиту для того, чтобы быстрее найти слово. Если бы в словарях слова стояли не по алфавиту, мы бы тратили кучу времени на поиск одного слова. Каков же принцип сортировки строк в
Python?
Оказывается, как и числа, буквы имеют свой вес. Буква, стоящая раньше в алфавите – легче, то есть «а» легче, чем «б», поэтому при сортировке она выходит первой. Из этого следует, что строки, как и числа, можно сравни- вать.
При сравнении слов сначала сравниваются первые буквы, если они отли- чаются, то определяется результат сравнения. Дальнейшие буквы уже не сравниваются. Если первые буквы равны, то сравниваются следующие два элемента, и так до конца. Например, слово «паровоз» будет «меньше», чем слово «пароход»: они отличаются в пятой букве и «в» < «х».
Если у вас закончились символы для проверки, то более короткая строка меньше длинной, поэтому «пар» < «парк». Заглавные буквы легче строчных, потому что стоят раньше в алфавите. Поэтому «А» < «а», «П» < «а».
Но откуда компьютер «знает», что такое «алфавитный порядок»? Оказыва- ется, при сравнении строк используются коды символов ASCII и Unicode, где каждый символ имеет свой порядковый номер.
Возьмем пару «ПАР» и «Пар». Первый символ в обоих словах одинаков, а второй отличается – в первом слове буква заглавная, а во втором – такая же, но строчная. Таким образом, получается, что:
«ПАР» < «Пар» < «пар»

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PY THON
50
А как же с другими символами (цифрами, латинскими буквами)? Цифры стоят в кодовой таблице по порядку, причем раньше, чем латинские буквы; латинские буквы – раньше, чем русские; заглавные буквы (русские и латин- ские) – раньше, чем соответствующие строчные. Поэтому
«5STEAM» < «STEAM» < «Steam» < «steam» < «ПАР» < «Пар» < «пар»
Например, для того чтобы отсортировать буквы внутри слова, программу можно записать так:
s =
'Понедельник'
s1 = ''.join (sorted (s))
print
(s1)
>>>
Пдееиклнноь
Задача 1. Необходимо ввести с клавиатуры несколько слов (например, фамилий) и вывести их на экран в алфавитном порядке.
Для решения этой задачи удобно перезаписать введенные через запятую фамилии в список, а затем отсортировать с помощью метода sorted:
s =
input
(
'Введите фамилии: '
)
#Абакиров Муканова Бебинов
Семенова Запруда
s1 = s.split
()
#формирует список из подстрок ['Абакиров',
'Муканова', 'Бебинов', 'Семенова', 'Запруда']
s2 =
' '
.join (
sorted
(s1))
print
(s2)
>>>
Абакиров Бебинов Запруда Муканова Семенова
ВОПРОСЫ И ЗАДАНИЯ:
1) Напишите программу, которая запрашивает ввести несколько слов с клавиатуры, а затем определяет длину самого короткого слова в строке.
2) Строковый метод isdigit() проверяет, состоит ли строка только из цифр. Напишите программу, которая запрашивает с ввода два целых числа и выводит их сумму. В случае некорректно­
го ввода программа не должна завершаться с ошибкой, а должна продолжать запрашивать числа. Обработчик исключений try­
except использовать нельзя.


51
ФОРМАТИРОВАНИЕ С ТРОК
12. Тема:
Форматирование строк
Форматирование строк в Python означает подстановку в какое-либо ме- сто шаблона другого текста. Подстановка происходит, что называется, «на лету». Например, с использованием форматирования можно создавать такие пригласительные билеты через готовый шаблон:
Уважаемый (ая)
Алина
!
Приглашаем Вас на
День открытых дверей
.
Дата события:
1 мая
С уважением,
Тимур
.
Одна подстановка запишется так:
print ('
Уважаемый (ая), {}!'
.format (
'Алина'
))
То есть, после текста шаблона вставляются пустые фигурные скобки и да- лее .format () с указанием в скобах значения, которое нужно вставить. При исполнении программы текст-подстановка вставляется на место фигурных скобок.
При множественных вставках в фигурные скобки вставляются индексы слов, которые идут в кортеже после .format (). Таким образом, запись ша- блона для нашего приглашения будет выглядеть так:
print (
'Уважаемый (ая), {0}! \nПриглашаем Вас на {1}.\nДа-
та события: {2} \n С уважением, {3}.'
.format (
'Алина', 'День
открытых дверей', '1 мая', 'Тимур'
))
Форматировать текст можно другим способом – без использования .format ().
Этот способ считается менее правильным и устаревающим. Однако, если вы встретите в коде оператор % – то, возможно, речь идет именно о фор- матировании. Запишем наш шаблон приглашения с помощью оператора %:
print
(
'Уважаемый (ая), %s! \nПриглашаем Вас на %s.\nДата
события: %d %s \n С уважением, %s.'
% (
'Алина'
,
'День откры-
тых дверей'
, 1,
'мая'
,
'Тимур'
))
>>>
Уважаемый (ая) Алина!
Приглашаем Вас на День открытых дверей.
Дата события: 1 мая
С уважением, Тимур.

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PY THON
52
Вы наверное заметили, что где-то мы записали %d, где-то %s? Они опреде- ляют, что мы используем в качестве подстановки:
%s – подставляет строку;
%d
– подставляет целое число;
%f
– подставляет дробное число.
Преобразования число-строка и строка-число
В практических задачах часто нужно преобразовать число, записанное в виде цепочки символов, в числовое значение и наоборот. Для этого в язы- ке Python есть стандартные функции:
Если строку не удалось преобразовать в число (например, если в ней со- держатся буквы), возникает ошибка и программа завершается.
Для дробных чисел (тип float) можно указать, сколько знаков в дробной части мы хотим вывести, например:
X = 34.8589578
print
(
'{:.2f}'
.format(X))
#34.86
print
(
'{:.3f}'
.format(X))
#34.859
Если в больших числах мы хотим использовать запятую в качестве разде- лителя разрядов, то записываем это так:
print
(
'{:,.2f}'
.format(10001.23554))
#10,001.24
КОМПЬЮТЕРНЫЙ ПРАКТИКУМ:
Напишите шаблон по запросу у пользователя логина и пароля.
Если логин или пароль будут введены с ошибкой, то необходимо вывести сообщение о том, что такой логин или пароль не найде­
ны. Если логин и пароль совпадают, то вывести приветствие с указанием имени пользователя.


53
РАБОТА С ГРАФИКОЙ В PY THON
13. Тема:
Работа с графикой в Python
Рисование с помощью модуля Turtle
Для простого рисования в среде программирования Python используется модуль Turtle (черепашка), который подключается командой:
from
turtle
import
*
#загружает команды для работы с черепашкой
reset ()
#обнуляет позицию и включает перо
Запустив программу, вы увидите окно для графики с пером (черепашкой) по центру.
Теперь, задавая команды, мы можем строить рисунки на экране. Напри- мер, команда
forward служит для перемещения черепашки вперед, где в скобках указывается количество шагов в пикселях. Для команд пово- рота right и left в скобках указывается количество градусов, на которые необходимо повернуть. Попробуем нарисовать квадрат:
from
turtle
import
*
reset ()
forward (100)
#движение вперед на 100
пикселей
right (90)
#поворот направо на 90˚
forward (100)
right (90)
forward (100)
right (90)
forward (100)
Для сокращения кода используем цикл for, а также зададим дополнитель- ные параметры для фигуры:
from
turtle
import
*
width (5)
#ширина линии - 5 пикселей
color(
'blue'
,
'green'
)
#первый - цвет линии, второй - цвет заливки
begin_fill()
#начать следить за черепашкой для заполнения области
for
i
in
range
(4):
forward (100)
right (90)
end_fill()
#заполнить цветом область, начиная с begin_fill()
>>>

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PY THON
54
Используя команду up(), вы можете поднять перо и с другого места начать рисовать другой рисунок (или напе- чатать текст). Для начала рисования нужно опустить перо командой down().
Для того чтобы нарисовать круг используется команда
circle(r, n), где r – радиус круга, n – часть окружности, которую мы рисуем, в градусах. Если n = 180 градусов, то перо выведет полуокружность, при
360 градусах нарисует полную окружность.
Для того чтобы нарисовать точку, используется команда dot(r, color), где r – радиус точки в пикселях, color – цвет, которым будет рисоваться точка.
Задача 1. Нарисуем окружность, по длине которой равно- мерно распределено заданное количество точек:
from
turtle
import
*
def
circ
(d, r, rBig):
#функция circ с параметра-
ми: кол-во точек,радиус точки, радиус окружности
for
i
in
range
(d):
circle(rBig, 360 / d)
#распределяем кол-во точек по кругу
dot(r,
'red'
)
up()
goto(150, 0)
#отводим перо на 150 пикселей направо
1   2   3   4   5   6   7