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

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

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

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

Задача«Сортировка сокровищ»

Старый пират Джон Сильвер наткнулся на заброшенный сундук, в котором лежали три диковинных сокровища: старинный компас, пиратская карта и золотой дублон. Пират хочет расставить их на полке в своей каюте в порядке ценности — от самого дешёвого к самому дорогому. Но он плох в математике и просит вас о помощи.

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

Формат ввода

Три стоимости сокровищ (целые числа). Каждое число вводится с новой строки.

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

Отсортированные стоимости сокровищ (целые числа). Числа выводятся в одну строку через пробел в порядке возрастания.

Пример

Ввод

150
25
70

Вывод

25 70 150

Подсказка

Вложенные условия

Вы можете вкладывать одни условные операторы (if) в другие, чтобы создавать более сложные и многоуровневые проверки. Это полезно, когда следующее действие зависит от нескольких последовательных условий.

Ключевым моментом здесь является правильный отступ (обычно 4 пробела), который показывает Python, какой блок кода к какому условию относится.

Пример:

x = 10

if x > 5:
    print("Первая проверка пройдена: x больше 5.")
    if x < 20:
        print("Вторая проверка пройдена: x также меньше 20.")
    else:
        print("Вторая проверка не пройдена: x не меньше 20.")
else:
    print("Первая проверка не пройдена: x меньше или равен 5.")

Полезный совет: Старайтесь не создавать слишком много уровней вложенности (3 и более). Глубоко вложенный код становится трудно читать и понимать. Часто сложную вложенность можно упростить, используя логические операторы.

Логические операторы

Логические операторы в Python используются для комбинирования двух или более условий. Они позволяют строить сложную логику, не вкладывая условия друг в друга. Основные логические операторы: and, or и not.

Оператор Название Описание
or логическое "ИЛИ" Возвращает True, если хотя бы одно условие истинно.
and логическое "И" Возвращает True, только если оба условия истинны.
not логическое "НЕ" (отрицание) Инвертирует результат: True становится False и наоборот.

Примеры:

a = 5
b = 7

# and: оба условия должны быть истинны
s1 = a > 3 and b < 10  # True and True -> True

# or: хотя бы одно условие должно быть истинным
s2 = a != 5 or b >= 7  # False or True -> True

# not: инвертирует результат
s3 = not (a < b)       # not (True) -> False

При использовании and результат будет истинным (True) только тогда, когда истинны оба операнда. При использовании or, для получения истины достаточно, чтобы хотя бы один из операндов был истинным. Оператор not превращает ложь в правду и наоборот.

Разбор сложного примера:

a, b, c = 7, 10, 11
# Исходное выражение:
print(not(a > 7 and b <= 10) or c != 17)

# Разберем по шагам:
# 1. a > 7  ->  7 > 7  -> False
# 2. b <= 10 -> 10 <= 10 -> True
# 3. (False and True) -> False
# 4. not(False) -> True
# 5. c != 17 -> 11 != 17 -> True
# 6. True or True -> True
# Результат: True

Полезный совет: Для повышения читаемости и избежания ошибок в сложных выражениях всегда используйте скобки (), чтобы явно указать порядок вычислений, даже если вы помните о приоритете операторов (not имеет наивысший приоритет, затем and, затем or).

Тернарный оператор

Тернарный оператор — это компактный способ записи простого условия if-else, который возвращает значение. Он позволяет присвоить переменной то или иное значение в зависимости от условия, и все это в одной строке.

Синтаксис: [значение_если_истина] if [условие] else [значение_если_ложь]

Примеры:

x = 10
# Если x > 5, result будет равен 100, иначе 200
result = 100 if x > 5 else 200
print(result)  # Выведет: 100

y = 20
# Присваиваем переменной z большее из двух значений
z = x if x > y else y
print(z)  # Выведет: 20

# Присваиваем текстовое значение
result_text = "positive" if x > 0 else "non-positive"
print(result_text)  # Выведет: positive

Полезный совет: Тернарный оператор отлично подходит для простых присваиваний. Однако, если логика становится сложнее или если в зависимости от условия нужно выполнить разные действия (а не просто вернуть значение), лучше использовать полноценную конструкцию if-else для сохранения читаемости кода.

Однострочные условия

Если тело условия (if, elif или else) состоит всего из одной инструкции, Python позволяет записать ее в той же строке после двоеточия.

Пример:

x = 10
if x > 5: print("x больше 5")

Важное замечание по стилю: Хотя такая запись синтаксически верна, она часто не рекомендуется руководством по стилю кода Python (PEP 8). Размещение инструкции на отдельной строке с отступом улучшает читаемость и является общепринятым стандартом. Используйте однострочную запись с осторожностью, в основном для очень простых и очевидных действий.

main.py
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
Тест 6
Тест 7
Тест 8
Тест 9
Тест 10
Решение разработчика
# Получаем стоимость первого сокровища от пользователя и преобразуем в целое число
treasure1 = int(input())
# Получаем стоимость второго сокровища от пользователя и преобразуем в целое число
treasure2 = int(input())
# Получаем стоимость третьего сокровища от пользователя и преобразуем в целое число
treasure3 = int(input())

# Основной блок условий для определения наименьшего из трёх чисел
# Проверяем, является ли первое сокровище самым дешёвым (или одним из самых дешёвых)
if treasure1 <= treasure2 and treasure1 <= treasure3:
    # Если первое сокровище самое дешёвое, сравниваем оставшиеся два
    if treasure2 <= treasure3:
        # Если второе дешевле третьего, выводим в порядке 1, 2, 3
        print(treasure1, treasure2, treasure3)
    else:
        # Иначе второе дороже третьего, выводим в порядке 1, 3, 2
        print(treasure1, treasure3, treasure2)
# Если первое сокровище не самое дешёвое, проверяем, может быть, второе самое дешёвое
elif treasure2 <= treasure1 and treasure2 <= treasure3:
    # Если второе сокровище самое дешёвое, сравниваем оставшиеся (первое и третье)
    if treasure1 <= treasure3:
        # Если первое дешевле третьего, выводим в порядке 2, 1, 3
        print(treasure2, treasure1, treasure3)
    else:
        # Иначе первое дороже третьего, выводим в порядке 2, 3, 1
        print(treasure2, treasure3, treasure1)
# Если ни первое, ни второе сокровища не являются самыми дешёвыми, значит, самое дешёвое - третье
else:
    # Если третье сокровище самое дешёвое, сравниваем оставшиеся (первое и второе)
    if treasure1 <= treasure2:
        # Если первое дешевле второго, выводим в порядке 3, 1, 2
        print(treasure3, treasure1, treasure2)
    else:
        # Иначе первое дороже второго, выводим в порядке 3, 2, 1
        print(treasure3, treasure2, treasure1)

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

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

AD

Реклама

red-snake blue-snake green-snake

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

Помощник ИИ

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