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

Занятие 2. Условия

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

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

Задача«Криптографический замок»

Вы — отважный искатель приключений, и в ходе своих странствий вы обнаружили таинственный сундук в подземелье древнего замка. Сундук заперт на магический криптографический замок, который требует ввода трёх секретных чисел. Легенда, начертанная на стене, гласит, что замок откроется, если выполняется хотя бы одно из двух условий:

  1. Три числа, введенные в замок, образуют строго возрастающую последовательность (то есть каждое следующее число больше предыдущего).
  2. Все три числа являются простыми.

Напомним, что простое число — это натуральное число больше 1, которое делится без остатка только на 1 и на само себя (например, 2, 3, 5, 7, 11).

Ваша задача — написать программу, которая поможет вам быстро проверять комбинации чисел. Программа должна по трём введённым целым числам определять, откроется ли замок.

Формат ввода

Три целых числа (integer), каждое вводится с новой строки. Это секретные числа для замка.

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

Строка (string) с результатом: "Замок открыт" или "Замок заперт".

Пример

Ввод

3
5
7

Вывод

Замок открыт

Подсказка

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

main.py
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
Тест 6
Тест 7
Тест 8
Тест 9
Тест 10
Решение разработчика
# Запрашиваем у пользователя три целых числа
a = int(input())
b = int(input())
c = int(input())

# Проверка первого условия: строго возрастающая последовательность
# Эта переменная будет True, если a < b и b < c, иначе False
is_increasing = a < b < c

# Проверка второго условия: все три числа являются простыми
# Создаем флаги для каждого числа, по умолчанию считаем их простыми
a_is_prime = True
b_is_prime = True
c_is_prime = True

# Проверяем число 'a' на простоту
if a <= 1:
    # Числа меньше или равные 1 не являются простыми
    a_is_prime = False
else:
    # Перебираем все возможные делители от 2 до a-1
    for i in range(2, a):
        # Если нашелся делитель без остатка, число не простое
        if a % i == 0:
            a_is_prime = False
            break # Прерываем цикл, так как дальше проверять нет смысла

# Проверяем число 'b' на простоту (логика аналогична)
if b <= 1:
    b_is_prime = False
else:
    for i in range(2, b):
        if b % i == 0:
            b_is_prime = False
            break

# Проверяем число 'c' на простоту (логика аналогична)
if c <= 1:
    c_is_prime = False
else:
    for i in range(2, c):
        if c % i == 0:
            c_is_prime = False
            break

# Итоговый флаг для второго условия: будет True, только если все три флага True
all_are_prime = a_is_prime and b_is_prime and c_is_prime

#  Финальное решение 
# Замок откроется, если выполнено хотя бы одно из двух условий (оператор or)
if is_increasing or all_are_prime:
    print("Замок открыт")
else:
    print("Замок заперт")

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

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

AD

Реклама

red-snake blue-snake green-snake

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

Помощник ИИ

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