


Помогите решить задачу: Субъект
Контрольная работа
макс. 15 балл.
Дедлайн: 4 июл., 13:26
Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод
Вывод стандартный вывод
Калле дрожал от волнения и восторга. Наконец-то, наконец ему попался по-настоящему подозрительный субъект! Подозрительный не только на первый взгляд, но и после более тщательного изучения. В самом деле, взрослый человек посреди ночи вылезает из окна! Разве стал бы он так поступать, не будь у него что-то нечистое на уме?
Напишите программу, которая выделит подозрительные строки различным образом.
А именно так: первую строку записать строчными буквами;
следующую заглавными;
потом первую букву каждого слова прописной, остальные строчными.
Затем повторить по кругу.
Но если встретится строка, начинающаяся с подозрительный, то ввод нужно прекратить и завершить программу.
Формат ввода
Вводятся строки, пока не будет введена строка сыщик.
Формат вывода
Вывести преобразованные строки.
Пример 1
Ввод Вывод
У него же в кармане отмычка
Ее надо испробовать
Запертая дверь вот все что нужно для этого
Дверь в подземелье старого замка
Калле не раздумывал больше 1 минуты
сыщик
у него же в кармане отмычка
ЕЕ НАДО ИСПРОБОВАТЬ
Запертая Дверь Вот Все Что Нужно Для Этого
дверь в подземелье старого замка
КАЛЛЕ НЕ РАЗДУМЫВАЛ БОЛЬШЕ 1 МИНУТЫ
Пример 2
Ввод Вывод
Правда совесть пыталась возражать
нехорошо присваивать чужое
Зачем дяде Эйнару отмычка?
подозрительный он тип
этот дядя Эйнар
сыщик
правда совесть пыталась возражать
НЕХОРОШО ПРИСВАИВАТЬ ЧУЖОЕ
Зачем Дяде Эйнару Отмычка?
for i, s in enumerate(iter(input, 'сыщик')):
if s.split()[0] == 'подозрительный': break
print([str.lower, str.upper, str.title][i % 3](s))
def process_string(string, transformation_index):
"""Обрабатывает строку в соответствии с заданным преобразованием.
Args:
string: Строка для обработки.
transformation_index: Индекс преобразования (0 - строчные, 1 - заглавные, 2 - первая буква прописная).
Returns:
Преобразованная строка.
"""
if transformation_index == 0:
return string.lower()
elif transformation_index == 1:
return string.upper()
else:
return " ".join(word[0].upper() + word[1:].lower() for word in string.split())
def main():
"""Основная функция программы."""
transformation_index = 0
while True:
line = input()
if line.startswith("подозрительный"):
break
if line == "сыщик":
continue
print(process_string(line, transformation_index))
transformation_index = (transformation_index + 1) % 3
if __name__ == "__main__":
main()
Объяснение:
1. process_string(string, transformation_index):
- Эта функция принимает строку string и индекс transformation_index, который определяет тип преобразования.
- Она возвращает преобразованную строку:
- 0 - строчные буквы (lowercase)
- 1 - заглавные буквы (uppercase)
- 2 - первая буква каждого слова прописная (title case)
2. main():
- Эта функция обрабатывает ввод и выводит преобразованные строки.
- transformation_index хранит текущий индекс преобразования (изначально 0).
- Цикл while True работает до тех пор, пока не будет введена строка, начинающаяся с "подозрительный".
- Внутри цикла:
- Читается строка с помощью input().
- Если строка начинается с "подозрительный", цикл прерывается.
- Если строка равна "сыщик", цикл продолжается без обработки строки.
- В противном случае строка обрабатывается с помощью process_string и выводится на экран.
- Индекс преобразования увеличивается на 1 по модулю 3, чтобы циклично менять тип преобразования.
Пример использования:
Ввод:
У него же в кармане отмычка
Ее надо испробовать
Запертая дверь вот все что нужно для этого
Дверь в подземелье старого замка
Калле не раздумывал больше 1 минуты
сыщик
Вывод:
у него же в кармане отмычка
ЕЕ НАДО ИСПРОБОВАТЬ
Запертая Дверь Вот Все Что Нужно Для Этого
дверь в подземелье старого замка
КАЛЛЕ НЕ РАЗДУМЫВАЛ БОЛЬШЕ 1 МИНУТЫ