Строки на языке Python

Разделы: Информатика

Класс: 10

Ключевые слова: язык Python


Добрый день, дорогой 9 класс!

Начинаем новую тему в программировании.

Откройте тетради, запишите число и тему урока «Строки».

Строка - это одномерный массив символов. Если в строке символы записаны как цифры и знаки препинания, то хранятся в ОЗУ только как символы из кодовой страницы символов. В Python 3 кодировка символов осуществляется по умолчанию в Unicode. В предыдущих версиях она была выполнена в ANSI кодировке.

Строка в Python может записываться в таком "строка" или 'строка' виде.

Если необходимо использовать другую кодировку, можно разместить специальное объявление на первой строке файла, к примеру:

# -*- coding: windows-1252 -*- 

Со строками в Python 3 могут осуществляться следующие операции:

1. Сложение (слияние строк)

S1 = 'С Новым'
S2 = 'годом!'
print(S1 + S2)
С Новым годом!

2. Повторение (умножение) строк

print('Привет!' * 3)

Привет! Привет! Привет!

3. Определение длины строки (количества символов в строке)

len('Привет!') 

7

4. Доступ по индексу (индексация сроки)

S = 'spam' 
S[0]
's'
S[2]
'a'
S[-2]
'a'

В Python возможен и доступ по отрицательному индексу, при этом отсчет идет от конца строки. В этом случае индексирование начинается с конца строки: -1 относится к последнему символу, -2 к предпоследнему и так далее. Вот такая же диаграмма, показывающая как положительные, так и отрицательные индексы строки 'foobar':

Вот несколько примеров отрицательного индексирования:

s = 'foobar' 
s[-1]
'r'
s[-2]
'a'
len(s)
6
s[-len(s)] # отрицательная индексация начинается с -1
'f'

5. Извлечение среза

Оператор извлечения среза: [X:Y]. X - начало среза, а Y - окончание;

символ с номером Y в срез не входит.

s = 'spameggs'
s[3:5]
'me'
s[2:-2]
'ameg'
s[:6]
'spameg'
s[1:]
'pameggs'
s[:]
'spameggs'
s[::-1] - переворачивает строку
'sggemaps'
s[3:5:-1]
''
s[2::2]
'aeg'
s = s[0] + 'b' + s[2:]
s
'sbam'

6. Логика операции принадлежности подстроки in

Python также предоставляет оператор принадлежности, который можно использоваться для манипуляций со строками. Оператор in (в) возвращает True (истина), если подстрока входит в строку, и False (ложь), если нет:

s = 'Python'
s in 'I love Python.'
True
s in 'I love Java.'
False

Есть также оператор not in, у которого обратная логика:

'z' not in 'abc'
True
'z' not in 'xyz'

False 

7. Функция ord( ) возвращает числовое значение для заданного символа.

На базовом уровне компьютеры хранят всю информацию в виде цифр. Для представления символьных данных используется схема перевода, которая содержит каждый символ с его репрезентативным номером.

ord('a') 
97
ord('#')
35

Unicode - это современный стандарт, который пытается предоставить числовой код для всех возможных символов, на всех возможных языках, на каждой возможной платформе. Python 3 поддерживает Unicode, в том числе позволяет использовать символы Unicode в строках. Функция ord() также возвращает числовые значения для символов Юникода:

ord('€') 
8364
ord('∑')
8721

8. И наоборот… Функция chr( ) возвращает символьное значение для данного целого числа. Если задано числовое значение n, chr(n) возвращает строку, представляющую символ n:

chr(97)
'a'
chr(35)
'#'

chr( ) также обрабатывает символы Юникода:

chr(8364) 
'€'
chr(8721)
'∑'

9. Функция str( ) возвращает строковое представление объекта.

Практически любой объект в Python может быть представлен как строка. str(obj) возвращает строковое представление объекта obj:

str(49.2)
'49.2'
str(3+4j)
'(3+4j)'
str(3 + 29)
'32'
str('py')
'py'

Есть ещё функции изменения регистра строки, при котором буквы можно заменять на заглавные и прописные буквы, но это уже материал 10-11 класса.

10. При изучении языка программирования Pascal, мы узнали, в чём разница команд write, read и writeln, readln. Окончание ln просто переводит курсор на новую строку. Для Python, чтобы перевести на новую строку дописываем \n

print("Hello\nWorld!")
Hello
World!

Решение задач.

Является введённая строка палиндромом? Палиндромом называется строка, которая читается слева направо и с право налево одинаково. Н-р: казак, 12321 и т.д.

Вариант 1 (из учебника Python задачи и примеры в разделе СТРОКИ)

s = input( )
l = len(s)
for i in range(l//2):
 if s[i] != s[-1-i]:
 print('Это слово палиндром')
 quit( )
print('Это слово не палиндром')

Выполним проверку решения на смартфоне или ноутбуке…

На смартфоне
На ноутбуке

Как видим программа, предложенная электронным учебником, не прошла тестирование, так как выдаёт неверный ответ. Строка "12321" как и "казак" являются на самом деле палиндромами, так как читаются слева направо и справа налево одинаково.

Значит, будет искать свой, верный путь решения задачи!

Вариант 2.

s = input()
d = s[::-1]
if d == s:
 print('Это слово палиндром')
else:
 print('Это слово не палиндром') 

Проверим правильность своего решения.

На смартфоне
На ноутбуке

Как видим это уже верное решение.

Д/З:

1. Списать в тетрадь материал данного урока. Разобрать ход решения Вариант 2, что означают команды в тексте программы.

2. Из приложения Python задачи и примеры во вкладке СТРОКИ списать в тетрадь, выполнить на смартфоне задачу «Выбрать числа из строки» и проверить правильность выполнения выполняемого кода.