• 1
    Ввод и вывод данных
    • Задачи
  • 2
    Условия
    • Задачи
  • 3
    Цикл for
    • Задачи
  • 4
    Строки
    • Задачи
  • 5
    Цикл while
    • Задачи
  • 6
    Списки
    • Задачи
  • 7
    Двумерные массивы
    • Задачи
  • 8
    Словари
    • Задачи
  • 9
    Множества
    • Задачи
  • 10
    Функции и рекурсия
    • Задачи
  • к

Занятие 5. Цикл while

Уровень сложности:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

Задача«пароль-отклик»

Вы — специалист по кибербезопасности, и ваша цель — подключиться к секретному серверу "Кентавр". Протокол подключения необычный: сервер отправляет вам строку-вызов, а вы должны немедленно отправить в ответ правильный пароль-отклик. Если отклик неверный, соединение немедленно разрывается.

Правило генерации отклика следующее: необходимо извлечь из строки-вызова все цифры и все латинские буквы, игнорируя остальные символы. Затем нужно составить новую строку, где сначала идут все извлеченные цифры (сохраняя их первоначальный порядок), а затем — все извлеченные буквы (также сохраняя их порядок).

Ваша программа должна читать строки-вызовы до тех пор, пока не получит команду SESSION_END. На эту команду ничего выводить не нужно, программа должна просто завершить свою работу.

Формат ввода

На вход подается последовательность строк, каждая на новой строке. Каждая строка — это очередной вызов от сервера. Последней строкой всегда будет SESSION_END.

Формат Вывода

Для каждой строки-вызова (кроме SESSION_END) необходимо вывести на отдельной строке сгенерированный пароль-отклик.

Пример

Ввод

alpha123bravo
call-sign: 9-x-ray-8
--20-victor-24--
SESSION_END

Вывод

123alphabravo
98callsignxray
2024victor

Подсказка

Тут подсказки не будет, решай сам!

main.py
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
Тест 6
Тест 7
Тест 8
Тест 9
Тест 10
Решение разработчика
# Бесконечный цикл, который будет прерван изнутри
while True:
    # Читаем очередную строку-вызов от сервера
    challenge_string = input()

    # Проверяем условие выхода из цикла
    if challenge_string == "SESSION_END":
        break  # Завершаем цикл и программу

    # Создаем две пустые строки для сбора цифр и букв
    digits_part = ""
    letters_part = ""

    # Перебираем каждый символ в полученной строке-вызове
    for char in challenge_string:
        # Если символ является цифрой, добавляем его в строку для цифр
        if char.isdigit():
            digits_part += char
        # Иначе, если символ является буквой, добавляем его в строку для букв
        elif char.isalpha():
            letters_part += char
        # Все остальные символы (пробелы, знаки препинания и т.д.) игнорируются

    # Соединяем две части, чтобы получить финальный пароль-отклик
    response_password = digits_part + letters_part

    # Выводим результат
    print(response_password)

🎉 Поздравляем! 🎉

Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.

AD

Реклама

red-snake blue-snake green-snake

Запускаем ваш код...

Помощник ИИ

Привет! Я твой помощник по программированию. Задавай любые вопросы по Python, я могу рассказать о функциях, методах, обьяснить то, что тебе не понятно, а так же о текущей задаче!