Задачи на строки python
Продолжаем наш цикл практических занятий, сегодня у нас на очереди задачи на строки python. В этой статье, мы разберем несколько практических задач.
Палиндром в питоне
В ходе работы над этой небольшой программой, мы поймем, как можно определить, является ли слово палиндромом или нет. Палиндром — это строка, которая читается одинаково, и спереди и сзади, например слово «Мадам» . Для того, что бы хорошо освоить этот материал, вам необходимо знать следующие темы:
Исходный код программы
my_str = 'мадам' my_str = my_str.casefold() rev_str = reversed(my_str) if list(my_str) == list(rev_str): print("Строка является палиндромом") else: print("Строка не является палиндромом")
- В этой программе, мы берем строку, которая хранится в my_str .
- Далее используем метод casefold() , для преобразования строки в нижний регистр
- Производим реверс строки с помощью метода reversed()
- Далее создаем условия, в котором производим сравнение. Перед сравнением упаковываем все в список.
Удалить знаки препинания python
В этом примере, вы научитесь удалять знаки препинания из строки. Логика реализации довольна простая, мы запустим цикл for, и будем проверять каждый символ строки, если символ является пунктуацией, присвоим ему пустой элемент. Для того, что бы хорошо разобраться в этом примере, вам следует знать следующие темы:
Исходный код программы:
punctuations = '''!()-[]<>;:'"\,<>./?@#$%^&*_~''' my_str = "Привет. Меня зовут ---Алексей." # my_str = input("Введи строку ") no_punct = "" for char in my_str: if char not in punctuations: no_punct = no_punct + char print(no_punct)
- В самом начале в переменной punctuations , мы определили знаки препинания
- Затем переменной my_str присвоили строку
- Определяем переменную no_punct , который присваиваем пустую строку
- Запускаем цикл, перебираем my_str, если в нем встречается символ пунктуации, заменяем ее на пустую строку
Алфавитный порядок слов Python
В этой программе, мы научимся сортировать слова в алфавитном порядке. Для реализации этой идеи мы воспользуемся циклом for. Для того, что бы хорошо понять работу этой программы, нам необходимо знать следующие темы:
В этом примере, мы наглядно рассмотрим то, как слова можно отсортировать в алфавитном порядке, возможно этот кусок кода, когда нибудь облегчит для вас рутинную задачу.
my_str = "Привет, это пример строки в алфавитном порядке" #my_str = input("Enter a string: ") words = [word.lower() for word in my_str.split()] words.sort() print("The sorted words are:") for word in words: print(word) Результат: Алфавитный порядок: алфавитном в порядке привет, пример строки это
- Переменной my_str присваиваем строку, которую надо отсортировать в алфавитном порядке
- С помощью метода split() , мы преобразовываем каждое слово в список слов
- Методом sort() , производим сортировку и выводим на печать
Количество гласных букв в слове
В этом примере, мы научимся подсчитывать количество гласных букв в предложении, возможно в будущем, вам понадобиться в какой либо программе реализовать такую штуку. И так, для более четкого понимания, вам необходимо знать следующие темы:
Исходный код:
glasalph = 'аеёиоуэюя' ip_str = 'Привет, меня зовут Тимур, мне 30 лет, в этом предложении, мы будет считать количество глассных букв?' ip_str = ip_str.casefold() count = <>.fromkeys(glasalph,0) for char in ip_str: if char in count: count[char] += 1 print(count) Результат:
- Объявили переменную glasalph , которой присвоили строку, с гласными буквами
- Объявили переменную ip_str , в которой хранится строка, где мы будем искать гласные
- Используем метод casefold() , и переводим всю строку в нижний регистр
- Используем метод словаря fromkeys() , для построения нового словаря с каждым гласным в качестве ключа, с нулевым значением
- Запускаем цикл for, и на каждой итерации смотрим, есть ли символ в ключах словаря, если есть, увеличиваем его значение на 1
Анаграммы Python
В этом практическом примере, мы созданим небольшую программу, которая сможет определить, являются ли две строки анаграммами? Для лучшего понимания этого примера, вам необходимо знать следующие темы:
И так, давайте немного разберемся. Анаграма — это слова состоящие из одних и тех же букв, расположенных в разном порядке. Наша задача, определить, являются ли две строки анаграммами. Как мы можем это сделать? В данном случае, я вижу довольно простой алгоритм.
- Привести обе строки в нижний регистр
- Отсортировать обе строки и сравнить их
- Если обе строки равны, то это анаграмма
str1 = "Игра" str2 = "Рига" # Приводим в нижний регистр str1 = str1.lower() str2 = str2.lower() # Сравниваем длину строк if(len(str1) == len(str2)): # Сортируем обе строки sorted_str1 = sorted(str1) sorted_str2 = sorted(str2) if(sorted_str1 == sorted_str2): print(str1 + " и " + str2 + " Являются анаграмой.") else: print(str1 + " и " + str2 + " не являются анаграмой.") else: print(str1 + " и " + str2 + " не являются анаграмой")Количество символов в строке python
На самом деле, этот практический пример, довольно простой, и в тоже время эффективный. При работе со строками, мне часто приходится считать количество вхождений символа в строку, я думаю решение этой небольшой задачи, когда нибудь облегчит вам вашу задачу.
Для решения этой задачи, вам необходимо знать следующие темы:
Исходный код:
[ Сборник задач ]Тема 8. Работа со строками
Рассмотрим строки как тип данных в Python. Опишем основные методы и свойства строк, необходимые для решения задач.
Строки в языке питон являются неизменяемыми объектами. Это значит, что в момент запуска скрипта ячейка памяти, на которую ссылается строка, не меняется. Из этого следует, что символы этого типа данных не могут меняться или переприсваиваться.
Они поддерживают различные операторы, могут сравниваться, включают большое количество встроенных методов. Любые действия над строками не модифицируют их, а создают новый объект.
Для успешного решения заданий нужно повторить: срезы, методы строк, операции и основные свойства.
Для того, чтобы приведенные в коде символы интерпретировались как строка, их нужно обернуть в кавычки. Имеется 4 способа это сделать:
– одинарные кавычки
– двойные кавычки
– тройные одинарные кавычки (многострочный текст с сохранением форматирования)
– тройные двойные кавычки (многострочный текст с сохранением форматирования)Пример – Интерактивный режим
>>> 'Одинарные кавычки'
'Одинарные кавычки'
>>> "Двойные кавычки"
Двойные кавычки
>>> '''Тройные
одинарные
кавычки '''
'Тройные \n одинарные \nкавычки '
>>> """
Тройные
двойные
кавычки"""
'\n Тройные \nдвойные \n\nкавычки'Операция сложения или конкатенирования складывает две или более строк в одну. В качестве аргументов могут выступать только строки.
Пример – Интерактивный режим
>>> 'Hello ' + 'Py'
'Hello Py'
>>> 'Hello ' + 4
TypeError: can only concatenate str (not "int") to str
Операция умножения, применяемая к строкам, подразумевает ее дублирование определенное количество раз (в соответствии со значением числа, которое передано в качестве параметра. Если передать отрицательное число или ноль, то вернется пустая строка).Пример – Интерактивный режим
>>> 'Hello ' * 4
'Hello Hello Hello Hello '
>>> 'Hello ' * -4
''Всё в питоне можно сделать строкой (так как все объекты имеют свойство __str__ , первично унаследованное от прародителя всех классов object ).
Поэтому любое число, список, объект или функцию можно представить в виде строки.
Не всегда приведение объекта к строке дает нам полезную информацию, но такая возможность имеется.
Метод encode() отображает строку в заданной кодировке. По умолчанию используется utf-8 . Можно использовать и другие варианты кодировки, но при невозможности закодировать строку возникнет ошибка.
Пример – Интерактивный режим
>>> 'cat'.encode(encoding='ascii')
b'cat'
>>> 'кот'.encode(encoding='utf-8')
b'\xd0\xba\xd0\xbe\xd1\x82'
>>> 'кот'.encode(encoding='cp1251')
b'\xea\xee\xf2'
>>> 'кот'.encode(encoding='utf32')
b'\xff\xfe\x00\x00:\x04\x00\x00>\x04\x00\x00B\x04\x00\x00'
>>> 'кот'.encode(encoding='ascii')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)Срезы строк возвращают новый объект на основании переданных параметров.
В общем виде синтаксис следующий:
СТРОКА[начало:конец:шаг]
Параметры можно опускать, поддерживается и отрицательная индексация (с конца). При любых значениях индексов (даже за рамками длины строки) возвратится объект(в том числе пустой), и никогда не возникнет ошибка.Шаг означает пропуски символов в строке: по умолчанию 1 – не пропускать символы, а, например, 3 – брать в срез только каждый третий элемент строки.
Отрицательный шаг берет символы в обратном порядке (от конца текста к началу).
Пример – Интерактивный режим
>>> 'Это строка'[1]
'т'
>>>'Это строка'[::2]
'Эосрк'
>>>'Это строка'[::-1]
'акортс отЭ'
>>> 'Это строка'[1:4]
'то '
>>> 'Это строка'[:34:3]
'Э ра'
>>> 'Это строка'[-1:-4:-1]
'ако'
>>> 'Это строка'[:]
'Это строка'Согласно PEP-257 строка документации ( docstring ) - это одно- или многострочный строковый литерал, разделенный тройными одинарными кавычками в начале модуля, функции, класса, метода и описывающий, что делает этот объект.
Важное замечание: docstring может быть представлен только в тройных одинарных кавычках, независимо от того, расположен ли он в одной строке или на нескольких.
Почти все объекты (функции, классы, модули или методы) имеют описание, которое можно посмотреть. Для этого используется свойство __doc__ .Пример – Интерактивный режим
>>> import math
>>> math.__doc__
'This module provides access to the mathematical functions\ndefined by the C standard.'
>>> math.sqrt.__doc__
'Return the square root of x.'
Стоит отметить, что функция help() возвращает более полную информацию, нежели свойство __doc__ .При оформлении docstring принято пользоваться одним из 4-х шаблонов:
– NumPy
– PyDoc
– EpyDoc