2.16M
Категория: ПрограммированиеПрограммирование

Строки

1.

Сегодня вы:
➔ узнаете специальные функции для
работы со строковыми переменными;
➔ узнаете, как запрограммировать ввод
данных пользователем;
➔ поймёте, почему очень важно
помнить, с каким типом данных вы
работаете.

2.

Повторение

3.

Что такое переменная?
Как её создать?

4.

Что такое переменная?
Как её создать?
Переменная — это элемент данных, имеющий
собственное имя.
Чтобы использовать переменную в программе, нужно:
● создать переменную, придумав ей имя;
● задать значение переменной.
Пример:
hours = 6

5.

Какой оператор может изменить
значение переменной?

6.

Какой оператор может изменить
значение переменной?
Оператор присваивания может менять значение
имеющейся переменной.
hours = 6
hours = 7.5
Изменения
начального значения
print(hours)
Программа напечатает:
7.5

7.

Выберите удачные имена
переменных. Объясните свой выбор
a
shifrovka
www
username
total_amount_of_students
book_title
pr

8.

Выберите удачные имена
переменных. Объясните свой выбор
Неясен смысл
Нечитаемое имя
a
shifrovka
Неясен смысл
www
username
Слишком длинное имя
total_amount_of_students
book_title
Неясен смысл
pr

9.

Какие типы данных вы знаете?

10.

Какие типы данных вы знаете?
Мы знаем три:
1. Целые числа.
2. Десятичные дроби.
3. Строки.
Численный тип
Строковый тип
144
Целое число (int)
'Ivan' (str)
48.3
Десятичная дробь (float)
'256'(str)
(2 * 11)
Целое число (int)
'15.05.2007' (str)
(4 * 8.2)
Десятичная дробь (float)
'Данные получены' (str)

11.

Переменные
Новая тема:
Ввод данных

12.

Проект «Калькулятор турфирмы»
Вернёмся к программе по
автоматическому расчёту затрат на
поездки и путешествия.
Запрограммируем ввод новых данных
без необходимости менять код
программы.

13.

Функция input()
input() — это функция для ввода данных с клавиатуры.
surname = input('Введите фамилию управляющего:')
city = input('Введите город:')
print('Директор филиала в г.', city, '-', surname)
Что напечатает программа?

14.

Функция input()
input() — это функция для ввода данных с клавиатуры.
surname = input('Введите фамилию управляющего:')
city = input('Введите город:')
print('Директор филиала в г.', city, '-', surname)
Программа
использует
данные,
введённые
пользователем.

15.

Функция input()
input() — это функция для ввода данных с клавиатуры.
result = input('Phrase')
Результат
работы
алгоритма:
переменная.
Алгоритм,
считывающий
данные.
Подсказка для
пользователя.

16.

Функция input()
input() — это функция для ввода данных с клавиатуры.
add_services = input('Стоимость дополнительных услуг:')
total = 2500 + add_services
print('Общая стоимость:', total)
Что напечатает программа?

17.

Функция input()
input() — это функция для ввода данных с клавиатуры.
add_services = input('Стоимость дополнительных услуг:')
total = 2500 + add_services
print('Общая стоимость:', total)
Кажется, в
программе
ошибка!
Как думаете,
какая?

18.

Функция input()
input() — это функция для ввода данных с клавиатуры.
add_services = input('Стоимость дополнительных услуг:')
total = 2500 + add_services
print('Общая стоимость:', total)
Результат работы
input — строка, а
не число.
Компьютер не
знает, как
прибавить к
целому числу
строку.

19.

Функции int() и str()
int() и str() используются для перехода от одного
типа данных к другому.
add_services = input('Стоимость дополнительных услуг:')
add_services = int(add_services)
total = 2500 + add_services
print('Общая стоимость:', total)
Что напечатает программа?

20.

Выводы:
1. Функция input() — это функция для ввода
данных с клавиатуры.
2. Результат работы функции input() —
строковая переменная.
3. Чтобы перейти от строкового типа к
целочисленному, нужно использовать
функцию int().

21.

Ответьте на вопросы
1. Что такое переменная? Какие типы
данных могут храниться в переменной?
2. Как перейти от строкового типа данных к
целочисленному? Где это используется?
3. Для чего нужна функция input()?

22.

Строки
Новая тема:
Строковый тип данных

23.

Строковые переменные
Чтобы научиться извлекать информацию из строк, сначала
запрограммируем простые кейсы.
Запрос
Нужно уметь
За подробные отзывы
менеджер делает скидку
Определять длину строки
Можно сохранить часть
отзыва про спортзал для
рекламы
Вырезать из строки её часть
Шеф-повару интересны
упоминания летнего меню
Искать упоминание слова или
фразы в строке
Управляющему важны
отзывы со словом «уют»
Искать упоминание слова или
фразы в строке

24.

Строковые переменные
Все функции, которые мы рассмотрим далее, по итогам
своей работы возвращают какое-либо значение.
Это логично, ведь мы хотим получить из строки
информацию. И эта информация может быть
сохранена в отдельной переменной.
Обработка аргумента и
возвращение результата
результат = имя_функции(аргумент)
число
или
строка

25.

Действия со строковыми переменными
Задача 1: Клиенты, оставляющие длинные отзывы, поощряются
скидками. Напишите программу, печатающую длину отзыва:
«Это потрясающее место!»
length = len(string)
это функция для получения длины
строки, указанной в скобках.
Возвращаемое значение —
количество символов в строке.
Программа
feedback = 'Это потрясающее место!'
length = len(feedback)
?
print(length)
Программа напечатает
22

26.

Действия со строковыми переменными
Задача 1: Клиенты, оставляющие длинные отзывы, поощряются
скидками. Напишите программу, печатающую длину отзыва:
«Это потрясающее место!»
length = len(string)
это функция для получения длины
строки, указанной в скобках.
Возвращаемое значение —
количество символов в строке.
Программа
feedback = 'Это потрясающее место!'
length = len(feedback)
print(length)
Программа напечатает
22

27.

Действия со строковыми переменными
Задача 2:
Менеджер комплекса попросил вырезать и сохранить для рекламы
часть отзыва о спортивном зале. Напишите программу, печатающую
нужную часть отзыва:
«Ходили на бокс. Хороший пляж»

28.

Действия со строковыми переменными
Задача 2:
Менеджер комплекса попросил вырезать и сохранить для рекламы
часть отзыва о спортивном зале. Напишите программу, печатающую
нужную часть отзыва:
«Ходили на бокс. Хороший пляж»
Х
о
д
и
л
и
0
1
2
3
4
5
Python
нумерует
символы с
нуля.
6
н
а
7
8
9
б
о
к
с
.
10
11
12
13
14
15
...
В Python строка — это объект, состоящий
из нескольких элементов-символов.

29.

Действия со строковыми переменными
Задача 2:
Менеджер комплекса попросил вырезать и сохранить для рекламы
часть отзыва о спортивном зале. Напишите программу, печатающую
нужную часть отзыва:
«Ходили на бокс. Хороший пляж»
Х
о
д
и
л
и
0
1
2
3
4
5
symbol = feedback[0]
6
н
а
7
8
9
б
о
к
с
.
10
11
12
13
14
15
это инструмент для получения
одного символа строки по его
номеру.
Номер символа в строке
указывается в [ ].
...

30.

Индекс —
это число, обозначающее номер
элемента в последовательности
(например, символов).
Х
о
д
и
л
и
0
1
2
3
4
5
6
н
а
7
8
9
б
о
к
с
.
10
11
12
13
14
Индекс символа
feedback[index]
Название строки
15
...

31.

Действия со строковыми переменными
Задача 2:
Менеджер комплекса попросил вырезать и сохранить для рекламы
часть отзыва о спортивном зале. Напишите программу, печатающую
нужную часть отзыва:
«Ходили на бокс. Хороший пляж»
Х
о
д
и
л
и
0
1
2
3
4
5
6
н
а
7
8
9
Программа
feedback = 'Ходили на бокс. Хороший пляж'
symbol = feedback[0]
print(symbol)
б
о
к
с
.
10
11
12
13
14
15
...
Программа напечатает
Х

32.

Действия со строковыми переменными
Задача 2:
Менеджер комплекса попросил вырезать и сохранить для рекламы
часть отзыва о спортивном зале. Напишите программу, печатающую
нужную часть отзыва:
«Ходили на бокс. Хороший пляж»
Х
о
д
и
л
и
0
1
2
3
4
5
6
н
а
7
8
б
о
к
с
.
9
10
11
12
13
14
Х
о
р
о
ш
и
й
16
17
18
19
20
21
22
23
15
п
л
я
ж
24
25
26
27
Чтобы получить часть подстроки, нужно знать
индекс начала и конца нужной части.

33.

Действия со строковыми переменными
Задача 2:
Менеджер комплекса попросил вырезать и сохранить для рекламы
часть отзыва о спортивном зале. Напишите программу, печатающую
нужную часть отзыва:
«Ходили на бокс. Хороший пляж»
Х
о
д
и
л
и
0
1
2
3
4
5
feedback[0:14]
6
н
а
7
8
9
б
о
к
с
.
10
11
12
13
14
...
— получить часть строки можно, указав в
квадратных скобках индекс начала и индекс,
следующий за концом подстроки.
Индексы
разделяются
двоеточием.

34.

Действия со строковыми переменными
Задача 2:
Менеджер комплекса попросил вырезать и сохранить для рекламы
часть отзыва о спортивном зале. Напишите программу, печатающую
нужную часть отзыва:
«Ходили на бокс. Хороший пляж»
Х
о
д
и
л
и
0
1
2
3
4
5
6
н
а
7
8
9
б
о
к
с
.
10
11
12
13
14
Программа
feedback = 'Ходили на бокс. Хороший пляж'
sport = feedback[0:14]
print(sport)
...
Программа напечатает
Ходили на бокс

35.

Срез
— это извлечение из строки одного
символа или некоторого фрагмента.
Срез feedback[a:b] возвращает
Пример:
подстроку, начиная с символа c
feedback = "бокс"
индексом a и заканчивая индексом b,
print(feedback[1:3])
не включая его.
print(feedback[1:])
Если после двоеточия опустить второй
Вывод:
аргумент, то срез берётся до конца
строки.
ок
окс

36.

Действия со строковыми переменными
Задача 3а:
Шеф-повар ресторана отеля интересуется, упоминают ли в отзывах его
летнее меню. Напишите программу, определяющую, есть ли в отзыве
слово «окрошка»:
«Понравилась окрошка от шефа»
position = feedback.find(‘окрошка’)
find() используется для
поиска в строке слова,
указанного в скобках.
find() — это метод.

37.

Метод
— это функция, применяемая
к некоторому объекту, например,
к строке.
Метод вызывается в виде:
Имя_объекта.Имя_метода(аргументы)
Например, feedback.find(‘окрошка’) — это
применение метода find с аргументом "окрошка" к
строке feedback.

38.

Действия со строковыми переменными
Задача 3а:
Шеф-повар ресторана отеля интересуется, упоминают ли в отзывах его
летнее меню. Напишите программу, определяющую, есть ли в отзыве
слово «окрошка»:
«Понравилась окрошка от шефа»
— это метод для поиска в
строке слова, указанного
в скобках.
position = feedback.find(‘окрошка’)
Индекс символа,
с которого
начинается
«окрошка».
П
о
н
р
а
в
и
л
а
с
ь
0
1
2
3
4
5
6
7
8
9
10
11
о
к
р
о
ш
к
а
12
13
14
15
16
17
18

39.

Действия со строковыми переменными
Задача 3а:
Шеф-повар ресторана отеля интересуется, упоминают ли в отзывах его
летнее меню. Напишите программу, определяющую, есть ли в отзыве
слово «окрошка»:
«Понравилась окрошка от шефа»
position = feedback.find(‘окрошка’)
Программа
feedback = 'Понравилась окрошка от шефа'
position = feedback.find(‘окрошка’)
print(position)
— это метод для поиска в
строке слова, указанного
в скобках.
Программа напечатает
12

40.

Действия со строковыми переменными
Задача 3б:
Шеф-повар ресторана отеля интересуется, упоминают ли в отзывах его
летнее меню. Напишите программу, определяющую, есть ли в отзыве
слово «окрошка»:
«Понравилась пицца с ананасами»
— это метод для поиска в
position = feedback.find(‘окрошка’) строке слова, указанного в
скобках.
Программа
feedback = 'Понравилась пицца с ананасами'
position = feedback.find(‘окрошка’)
print(position)
Программа напечатает
-1
Такого слова
нет

41.

Действия со строковыми переменными
Задача 4.
Управляющий тоже запросил поиск отзывов со словом «уют». Уходя,
он заметил, что отзывы некоторых гостей состоят только из одного
слова «Уютно!».
«Уютно!», «Отель уютный»
Программа
Программа напечатает
feedback1 = 'Уютно!'
feedback2 = 'Отель уютный'
position1 = feedback1.find(‘уют’)
position2 = feedback2.find(‘уют’)
print(position1)
print(position2)
Что напечатает
программа?

42.

Действия со строковыми переменными
Задача 4.
Управляющий тоже запросил поиск отзывов со словом «уют». Уходя,
он заметил, что отзывы некоторых гостей состоят только из одного
слова «Уютно!».
«Уютно!», «Отель уютный»
Программа
Программа напечатает
feedback1 = 'Уютно!'
-1
feedback2 = 'Отель уютный'
6
position1 = feedback1.find(‘уют’)
position2 = feedback2.find(‘уют’)
print(position1)
print(position2)
Почему?!

43.

Действия со строковыми переменными
Задача 4.
Управляющий тоже запросил поиск отзывов со словом «уют». Уходя,
он заметил, что отзывы некоторых гостей состоят только из одного
слова «Уютно!».
«Уютно!», «Отель уютный»
Сравни:
У
ю
т
н
о
!
О
т
е
л
ь
0
1
2
3
4
5
0
1
2
3
4
5
у
ю
т
н
ы
й
6
7
8
9
10
11

44.

Действия со строковыми переменными
Задача 4.
Управляющий тоже запросил поиск отзывов со словом «уют». Уходя,
он заметил, что отзывы некоторых гостей состоят только из одного
слова «Уютно!».
«Уютно!», «Отель уютный»
Сравни:
У
ю
т
н
о
!
О
т
е
л
ь
0
1
2
3
4
5
0
1
2
3
4
Заглавная буква
5
у
ю
т
н
ы
й
6
7
8
9
10
11
Строчная буква
Точно! Мы знаем из правила оформления кода, что регистр имеет
значение! Что могло бы помочь нам с этой проблемой?

45.

Действия со строковыми переменными
Задача 4.
Управляющий тоже запросил поиск отзывов со словом «уют». Уходя,
он заметил, что отзывы некоторых гостей состоят только из одного
слова «Уютно!».
«Уютно!», «Отель уютный»
feedback = feedback.lower()
— этот метод делает все буквы в
строке маленькими.
У
ю
т
н
о
!
у
ю
т
н
о
!
0
1
2
3
4
5
0
1
2
3
4
5

46.

Действия со строковыми переменными
Задача 4.
Управляющий тоже запросил поиск отзывов со словом «уют». Уходя,
он заметил, что отзывы некоторых гостей состоят только из одного
слова «Уютно!».
«Уютно!», «Отель уютный»
feedback = feedback.lower()
— этот метод делает все буквы в
строке маленькими.
Программа
feedback1 = 'Уютно!'
feedback1 = feedback1.lower()
position1 = feedback1.find(‘уют’)
print(position1)
Программа напечатает
0

47.

Выводы:
1. С переменными строкового типа можно
выполнять множество операций: от
нахождения длины строки до поиска слова
в строке.
2. Все символы в строке пронумерованы.
Первый символ имеет индекс 0.
3. Чтобы освоить эти функции, нужно
отработать их на практике!

48.

Странная программа
Программа должна считать рейтинг качества
обслуживания. Всё ли в ней правильно?
point1 = input('Оцените от 1 до 5 удобство гостиницы:')
point2 = input('Оцените от 1 до 5 еду ресторана:')
total_rating = point1 + point2
print('Общий рейтинг:', total_rating)

49.

Странная программа
Программа должна считать рейтинг качества
обслуживания. Всё ли в ней правильно?
point1 = input('Оцените от 1 до 5 удобство гостиницы:')
point2 = input('Оцените от 1 до 5 еду ресторана:')
total_rating = point1 + point2
print('Общий рейтинг:', total_rating)
Нет изменения строкового типа данных
на целочисленный с помощью функции int()!
Программа выдаст ошибку!

50.

Странная программа
Программа должна считать рейтинг качества
обслуживания. Всё ли в ней правильно?
point1 = input('Оцените от 1 до 5 удобство гостиницы:')
point2 = input('Оцените от 1 до 5 еду ресторана:')
total_rating = point1 + point2
print('Общий рейтинг:', total_rating)
Странно, программа работает…
Откуда взялось число 34?

51.

Странная программа
Компьютер распознал введённые данные как строки.
Т. к. сложить строки нельзя, компьютер объединил их в одну!
point1 = input('Оцените от 1 до 5 удобство гостиницы:')
point2 = input('Оцените от 1 до 5 еду ресторана:')
total_rating = point1 + point2
print('Общий рейтинг:', total_rating)

52.

Странная программа
Чтобы такие простые вещи не были для вас
сюрпризом, нужно разобраться в том, как
компьютер распознаёт программы!
Это поможет вам понять, почему знак «+»
может и складывать числа, и объединять
строки.

53.

Компьютеры понимают только
сигналы электрического тока
➔1 — есть сигнал,
➔0 — нет сигнала.

54.

Компьютер состоит из множества
деталей. Каждая распознаёт сигналы
0
0
1


0
1
⚙ 1

0
1
0
1
0
⚙ 1

0
1

0 0 0...


0 0 1...






0 1 1...
0 1 0...
1 0 0...
1 0 1...
1 1 0...
1 1 1...

55.

Чтобы компьютер выполнил действие,
ему нужно передать команду из 0 и 1
0 0 0...
выполнится
0 0 1...
выполнится
0 1 0...
выполнится
Действие 1
Действие 2
Действие 3
«Программировать» компьютер с помощью таких сигналов очень
неудобно! Никто не сможет запомнить команды из 0 и 1.

56.

Язык программирования
и интерпретатор
Одним из решений проблемы стало использование языка
программирования и интерпретатора.
Программист вводит команду
на языке программирования
Программист нажимает кнопку
«Запустить программу»
Команда переводится на язык сигналов
(нули и единицы)
Интерпретатор
Команда выполняется

57.

Интерпретатор
— это специальная программа,
распознающая и исполняющая команды.

58.

Интерпретатор
Вернёмся к примеру с типами данных:
point1 = input('Оцените от 1 до 5 удобство гостиницы:')
point2 = input('Оцените от 1 до 5 еду ресторана:')
total_rating = point1 + point2
Распознавание: оператор стоит между строками.
Команда: объединить строки.

59.

Интерпретатор
Рассмотрим другой пример:
point1 = 4
point2 = 5
total_rating = point1 + point2
Распознавание: оператор стоит между числами.
Команда: сложить два числа.

60.

Интерпретатор
Интерпретатору можно явно указать, с каким типом данных он имеет дело.
Вы уже знаете эти функции: int() и str().
point1 = input('Оцените от 1 до 5 удобство гостиницы:')
point1 = int(point1)
point2 = input('Оцените от 1 до 5 удобство гостиницы:')
point2 = int(point2)
total_rating = point1 + point2
Распознавание: оператор стоит между числами.
Команда: сложить два числа.

61.

Интерпретатор
Чаще программисты называют int() и str() функциями перехода от одного
типа данных к другому (меняющими тип данных).
day = 14
month = 11
day = str(day)
month = str(month)
date = day + ‘.’ + month
print(‘Дата поездки:’, date)
Распознавание: оператор стоит между строками.
Команда: объединить строки.

62.

Благодаря умному интерпретатору
некоторые операторы по-разному
работают с разными типами
Оператор
Значение для строк
Значение для чисел
+
Объединение строк
Сумма чисел
*
Повторение строки
несколько раз
Произведение чисел

63.

Благодаря умному интерпретатору
некоторые операторы по-разному
работают с разными типами
Оператор
Значение для строк
Значение для чисел
+
Объединение строк
Сумма чисел
*
Повторение строки
несколько раз
Произведение чисел
Отличное место
Объединение двух строк
3 * 'Круто!'
Круто! Круто! Круто!
Повторение строки
3 раза
'Отличное ' *
'место'
can't multiply
sequence by non-int of
type 'str'
Интерпретатор не понимает,
сколько раз нужно
повторить строку
'Отличное ' +
'место'

64.

Благодаря умному интерпретатору
некоторые операторы по-разному
работают с разными типами
Оператор
Значение для строк
Значение для чисел
+
Объединение строк
Сумма чисел
*
Повторение строки
несколько раз
Произведение чисел
Также нужно помнить, что многие функции и операторы работают
только с определёнными типами.
Функцией len() найти длину числа не получится.

65.

Решаем задачки!
Исправь ошибки в программе, передающей в хранилище номера самых уютных
корпусов отеля. Дополни программу номерами символов, соответствующими
корпусам. Программа должна печатать результат как на картинке.

66.

Решаем задачки!
Хозяина ресторана интересует, понравились ли клиенту фирменные блюда:
шоколадный торт и шашлык. Напиши программу, которая запрашивает у пользователя
понравившиеся блюда и печатает результат поиска как на картинке ниже.
- Если блюдо найдено, то программа печатает номер символа, с которого начинается
блюдо.
- Если блюдо не найдено, то программа печатает -1.

67.

Решаем задачки!
feedback = 'Волшебный Отель с супер ресторанами. Лучший на Кипре. Качественная еда,
большое разнообразие. Прекрасный пляж и сервис. Чистые и просторные номера! Все на
пять! Японская кухня оставляет приятное впечатление. Всегда, приезжая в Лимассол,
заказываем суши и роллы. Мимо витрины со сладким очень сложно пройти не остановившись,
хотя бы посмотреть. Тихий район - это круто!'
searching1 = 'тихий район'
searching2 = 'вкусно'
feedback_low =
Напиши программу, анализирующую отзыв клиента. В систему уже загружен длинный отзыв.
Нужно написать программу, выполняющую поиск по словам «тихий район» и «вкусно».
Оформи печать результата как на картинке. ВНИМАНИЕ! Перед анализом нужно сделать все
буквы текста строчными (маленькими). Вдруг клиент написал «Вкусно», а не «вкусно»!

68.

Выводы:
2. При распознавании интерпретатор
ориентируется на типы данных, с которыми
он взаимодействует.
3. При необходимости мы можем менять
типы данных с помощью int() и str().
Новая тема
1. Интерпретатор — это специальная
программа для распознавания и
выполнения команд.

69.

1. Какие функции для работы со строками
вы знаете? Для чего они используются?
2. Как перейти от строкового типа данных к
целочисленному? Где это используется?
3. Что такое интерпретатор? Зачем он
нужен?
Завершение урока
Ответьте на вопросы

70.

1. Узнали важные функции для работы
со строками.
2. Узнали, как представлены данные в
компьютере.
3. Узнали, почему тип данных очень
важен для интерпретатора.
Завершение урока
Сегодня вы:
English     Русский Правила