#Код1
my_str = 'Сидел барсук в своей норе и ел картошечку пюре' # Создаем строку
print(my_str)
print(len(my_str)) # Получаем длину строки с помощью встроенного метода len()
#my_str = 'Сидел барсук в своей норе и ел картошечку пюре'# + '.'
my_str1 = my_str + '.' # Выполняем конкатенацию строк через переменную
print(my_str1)
print('ре' in my_str) # Определяем вхождение подстроки 'ре'
print(my_str.count('ре')) # Определяем количество вхождений подстроки 'ре'
print(my_str[-2]) # Получаем предпоследний символ строки
print(my_str[1::2]) # Получаем элементы с нечетными индексами
# Для этого выполняем срез, начиная с элемента с индексом 1 по конец строки с шагом 2
print(my_str.count(' ') + 1) # Определяем количество слов в строке
# Для этого считаем количество пробелов и прибавляем 1
#Код2
my_str = 'пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.' # Создаем строку
if my_str.islower(): print(my_str.capitalize()) # Проверяем регистр строки и делаем первую букву заглавной, если регистр нижний
# Ищем индекс вхождения подстроки 'сопровождать'
# Вариант 1: Используем метод find() - строковый метод
print(my_str.find('сопровождать'))
# Вариант 2: Используем метод index() - метод для работы с любыми последовательностями
print(my_str.index('сопровождать'))
my_str2 = my_str.replace('сопровождать', 'поддерживать') # Заменяем подстроку 'сопровождать' на 'поддерживать'
print(my_str2)
lst = my_str.split(',') # Разбиваем строку на подстроки по разделителю ',' и сохраняем подстроки в список
print(lst)
lst = ','.join(lst)
print(lst)
#Код3 Выводит расширение файла
# Импортируем стандартный модуль re для работы с регулярными выражениями
import re
# Создаем константу для имени файла, которое будет использовать для тестов
FILENAME = 'folder1/folder2/file.ext'
# Вариант решения 1 - пользуемся срезами
def extention_slice(filename):
# Находим индекс точки
point_pos = filename.find('.')
# Возвращаем срез начиная с позиции после точки и до конца имени файла
return filename[point_pos + 1:]
# Вариант решения 2 - используем функцию partition()
def extention_part(filename):
# С помощью метода partition() разбиваем имя файла на 3 части
# В качестве разделителя используем символ '.'
# Метод partition() возвращает кортеж из 3 элеметов
# Возвращаем 3-й элемент
return filename.partition('.')[2]
# Вариант решения 3 - пользуемся регулярными выражениями
def extention_regex(filename):
# Формируем регулярное выражение для поиска расширения:
# \. - ищем символ точки в строке
# .+$ - после точки ищем любые символы вплоть до конца строки
# (.+$) - скобками формируем группу(это необходимо, чтобы получить не точку с расширением, а только само расширение)
regex = r'\.(.+$)'
# Обращаемся к модулю re и вызываем для него метод search для поиска подстроки по регулярному выражению
# Из результата берем группу с индексом 1
# Это часть подстроки, которая подходит под выражение в скобках (например, 'ext')
# Группа с индексом 0 - это полная подстрока, подходящая под регулярное выражение(например, '.ext')
return re.search(regex, filename)[1]
# Тесты
if __name__ == '__main__':
print(extention_slice(FILENAME))
print(extention_part(FILENAME))
print(extention_regex(FILENAME))
#Код4 Складывает цифры целого числа
NUM = 12345
# Вариант решения 1 - пользуемся циклом for
def sum_for(num):
# Инициализируем переменную для суммы
s = 0
# Преобразуем число в строку
# В цикле перебираем символу полученной строки
for item in str(num):
# Каждый символ переводим в число и добавляем к сумме
s = s + int(item)
# Возвращаем конечную сумму
return s
# Вариант решения 2 - используем генераторы списков
def sum_list(num):
# Создаем список с помощью генератора
# Конечные элементы списка переводим в числа
lst = [int(item) for item in str(num)]
# С помощью встроенной функции sum() находим сумму элементов списка
return sum(lst)
# Тесты
if __name__ == '__main__':
print(sum_for(NUM))
print(sum_list(NUM))
#Код5 Заменяет заданное количество вхождений подстроки
STR = '01101011101011'
# Тесты
if __name__ == '__main__':
# Заменяем 1 ноль на единицу
print(STR.replace('1', '0', 1))
# Заменяем 5 нулей на единицы
print(STR.replace('1', '0', 5))
# Заменяем все нули на единицы(значение по-умолчанию)
print(STR.replace('1', '0'))
# Заменяем 9 нулей на единицы(все присутствующие единицы)
print(STR.replace('1', '0', 9))
# Заменяем 10 нулей на единицы(количество единиц больше, чем есть в строке)
print(STR.replace('1', '0', 10))
#Код6 Проверяет, является ли строка палиндромом
# Список из нескольких строк для тестирования работы функции check_if_palindrome()
TESTS = ['Аргентина манит негра',
'аргентина манит негра',
'Манит Аргентина негра']
# Функция, которая проверяет, является ли переданная строка string палиндромом
def check_if_palindrome(string):
# Для упрощения процесса проверки удаляем пробелы между словами
# И переводим строку в нижний регистр
prepared_str = string.replace(' ', '').lower()
# Используем срез с обратным шагом, чтобы перевернуть строку задом наперед
# Если строка равна своей перевернутой копии
if prepared_str == prepared_str[::-1]:
# Возвращаем логическое True
return True
else:
# Возвращаем логическое False
return False
if __name__ == '__main__':
# Прогоняем в цикле все тестовые строки из списка
# Для каждой строки вызываем функцию, выполняем проверку и печатаем результат
for item in TESTS:
print('Строка является палиндромом:', check_if_palindrome(item))
#Код7 Меняет слова местами
def swap_words(string):
# Формируем список из слов строки
lst = string.split(' ')
# Меняем порядок слов на обратный
lst.reverse()
# Соединяем слова в предложение через пробелы и возвращаем полученное значение
return ' '.join(lst)
if __name__ == '__main__':
print(swap_words('идет снег'))
print(swap_words('идет снег давно'))