Напишите функцию search_substr(subst, st), которая принимает 2 строки и определяет, имеется ли подстрока subst в строке st.
В случае нахождения подстроки, возвращается фраза «Есть контакт!», а иначе «Мимо!».
Должно быть найдено совпадение независимо от регистра обеих строк.
def search_substr(subst, st):
if subst.lower() in st.lower():
return 'Есть контакт!'
else:
return 'Мимо!'
# Тесты
print(search_substr('Кол', 'коЛокОл'))
print(search_substr('Колобок', 'колобоК'))
print(search_substr('Кол', 'Плов'))
Есть контакт!
Есть контакт!
Мимо!
Требуется определить индексы первого и последнего вхождения буквы в строке.
Для этого нужно написать функцию first_last(letter, st), включающую 2 параметра: letter – искомый символ, st – целевая строка.
В случае отсутствия буквы в строке, нужно вернуть кортеж (None, None), если же она есть, то кортеж будет состоять из первого и последнего индекса этого символа.
def first_last(letter, st):
first = st.find(letter)
if first < 0:
return None, None
last = st.rfind(letter)
return first, last
# Тесты
print(first_last('a', 'abba'))
print(first_last('a', 'abbaaaab'))
print(first_last('a', 'a'))
print(first_last('a', 'spring'))
(0, 3)
(0, 6)
(0, 0)
(None, None)
На основании предоставленного отрывка текста определить 3 наиболее часто встречаемых символа в ней.
Пробелы нужно игнорировать (не учитывать при подсчете).
Для выведения результатов вычислений требуется написать функцию top3(st).
Итог работы функции представить в виде строки: «символ – количество раз, символ – количество раз…».
from collections import Counter
def top3(st):
counter_top3 = Counter(st.replace(' ', '')).most_common(3)
return ', '.join([f'{letter} - {cnt}' for letter, cnt in counter_top3])
# Тесты
print(top3('Улыбкой ясною природа Сквозь сон встречает утро года Синея блещут небеса. Еще прозрачные, леса'))
print(top3('АаА'))
print(top3('Голова думала'))
е - 9, о - 8, р - 6
А - 2, а - 1
А - 3, о - 2, л - 2
Николай решил вспомнить старые времена.
В свое время было модно писать сообщения с чередующимися заглавной и малой буквами.
Он захотел изобрести функцию, которая будет делать с любой предоставленной строкой аналогичное.
Ваша задача: повторить труд студента camel(st) с учетом того, что пробелы и знаки препинания не должны портить чередование регистра символов (они в этом процессе не учитываются, но возвращаются в итоговой строке).
def camel(st):
new_st = ''
letter_counter = 0
for index, val in enumerate(st):
if val.isalpha():
if letter_counter % 2 == 0:
new_st += val.upper()
else:
new_st += val.lower()
letter_counter += 1
else:
new_st += val
return new_st
# Тесты
print(camel('Утром!! было! солнечно!!!!'))
print(camel('КРАСОТА)))'))
print(camel('дождливЫЙ, вечеР??'))
CASE_FUNCTIONS = [str.upper, str.lower]
def camel(st):
index = 0
camel_st = ''
for sym in st:
if sym.isalpha():
camel_st += CASE_FUNCTIONS[index % 2](sym)
index += 1
else:
camel_st += sym
return camel_st
# Тесты
print(camel('Утром!! было! солнечно!!!!'))
print(camel('КРАСОТА)))'))
print(camel('дождливЫЙ, вечеР??'))
УтРоМ!! бЫлО! сОлНеЧнО!!!!
КрАсОтА)))
ДоЖдЛиВыЙ, вЕчЕр??
Дмитрий считает, что когда текст пишут в скобках (как вот тут, например), его читать не нужно.
Вот и надумал он существенно укоротить время чтения, написав функцию, которая будет удалять все, что расположено внутри скобок.
Помогите ленивому Диме разработать функцию shortener(st), которая будет удалять все, что внутри скобок и сами эти скобки, возвращая очищенный текст (скобки могут быть вложенными).
def shortener(st):
while '(' in st or ')' in st:
left = st.rfind('(')
right = st.find(')', left)
st = st.replace(st[left:right + 1], '')
return st
# Тесты
print(shortener('Падал(лишнее (лишнее) лишнее) прошлогодний снег (лишнее)'))
print(shortener('(лишнее(лишнее))Падал прошлогодний (лишнее(лишнее(лишнее)))снег'))
Падал прошлогодний снег
Падал прошлогодний снег
Александр решил как-то отобразить в тексте BACKSPACE (т.е. удаление последнего символа).
Он подумал, что символ «@» отлично для этого подходит.
Всем своим знакомым он дал строки такого вида (например, «гр@оо@лк@оц@ва»), чтобы посмотреть, кому удастся написать функцию cleaned_str(st), возвращающую строку в ее чистом виде.
def cleaned_str(st):
clean_lst = []
for symbol in st:
if symbol == '@' and clean_lst:
clean_lst.pop()
elif symbol != '@':
clean_lst.append(symbol)
return ''.join(clean_lst)
# Тесты
print(cleaned_str('гр@оо@лк@оц@ва'))
print(cleaned_str('сварка@@@@@лоб@ну@'))
голова
слон