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

Занятие 1. Ввод и вывод данных

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

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

Задача« треугольник Герона»

Напишите программу, которая вычисляет площадь треугольника по трём его сторонам, используя формулу Герона.

Формула Герона выглядит так:


где abc — длины сторон треугольника, а p — его полупериметр, который вычисляется по формуле:

p=(a+b+c)/2

Формат ввода

Одна строка, содержащая три числа (длины сторон треугольника ab и c), разделенные пробелами. Числа могут быть целыми или дробными.

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

Одно число — площадь треугольника. Результат может быть дробным числом.

Пример

Ввод

3 4 5

Вывод

6.0

Подсказка

Считывание нескольких переменных из одной строки

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

Как это работает:

  1. input() считывает всю строку целиком, например "20 30".
  2. Метод .split() "разрезает" эту строку по указанному разделителю (по умолчанию — по пробелу) и создает список из строк: ['20', '30'].
  3. Функция map(int, ...) применяет функцию int (преобразование в целое число) к каждому элементу этого списка. В результате получается специальный map-объект.
  4. Наконец, Python "распаковывает" этот объект по переменным a и b.

Пример: Ввод:

20 30

Считываем:

a, b = map(int, input().split()) # можно использовать float, если нужны дробные числа
print(a, b) # выведет 20 30
print(type(a)) # выведет <class 'int'>

Полезные советы:

  • Если числа разделены не пробелом, а, например, запятой (ввод: 20,30), укажите это в методе split(): input().split(',').
  • Убедитесь, что количество переменных слева от = соответствует количеству значений в строке. Если они не совпадут, программа выдаст ошибку ValueError.

Три типа деления

В Python существует три различных оператора для деления, и каждый из них служит своей цели.

  1. / — Обычное (вещественное) деление Этот оператор всегда возвращает в результате дробное число (float), даже если числа делятся нацело.

    a = 27
    b = 10
    print(a / 5) # выведет 5.4
    print(b / 2) # выведет 5.0 (обратите внимание, не 5, а 5.0)
    
  2. // — Целочисленное деление (деление нацело) Этот оператор выполняет деление и отбрасывает дробную часть, возвращая целое число (int). Он как бы отвечает на вопрос "сколько раз одно число целиком помещается в другом?".

    a = 27
    print(a // 5) # выведет 5 (потому что 5 помещается в 27 пять полных раз)
    
  3. % — Остаток от деления (деление по модулю) Этот оператор возвращает то, что "осталось" после целочисленного деления.

    a = 27
    print(a % 5) # выведет 2
    # Логика: ближайшее к 27 число, которое делится на 5 без остатка, это 25. 
    # Разница: 27 - 25 = 2.
    

Практическое применение %: Самое частое использование оператора % — это проверка на четность. Любое четное число делится на 2 без остатка, а нечетное — с остатком 1.

a = 27
b = 14
print(f"Число {a} нечетное? Остаток от деления на 2: {a % 2}") # выведет 1
print(f"Число {b} четное? Остаток от деления на 2: {b % 2}")   # выведет 0

Возведение в степень

Для возведения числа в степень в Python используется оператор **.

a = 2
b = 3
print(a**3) # выведет 8 (2 в степени 3)
print(b**2) # выведет 9 (3 в степени 2)

Полезные советы:

  • Для извлечения квадратного корня можно возвести число в степень 0.5.
    print(9**0.5) # выведет 3.0
    
  • Существует также встроенная функция pow(a, b), которая делает то же самое, что и a**b.
    print(pow(2, 3)) # выведет 8
    

Функция print() и форматирование строк

Функция print() выводит данные на экран. Просто складывать строки и переменные через + неудобно, так как числа нужно постоянно превращать в строки с помощью str(). Современный Python предлагает более изящные способы.

f-строки (f-strings) — рекомендуемый способ: Это самый современный, быстрый и читаемый способ. Перед строкой ставится буква f, а переменные или выражения указываются внутри фигурных скобок {}.

name = "Alice"
age = 30
print(f"Имя: {name}, Возраст: {age}")
# Вывод: Имя: Alice, Возраст: 30

Преимущество: можно прямо внутри скобок выполнять операции.

print(f"Через год ей будет {age + 1}")
# Вывод: Через год ей будет 31

Метод .format() — более старый, но все еще актуальный способ: В строке ставятся пустые фигурные скобки {}, а после строки вызывается метод .format(), в который передаются переменные.

name = "Alice"
age = 30
print("Имя: {}, Возраст: {}".format(name, age))
# Вывод: Имя: Alice, Возраст: 30

Полезные советы для print():

  • Разделитель sep: По умолчанию print разделяет свои аргументы пробелом. Это можно изменить.
    print(1, 2, 3, sep="-") # выведет 1-2-3
    
  • Окончание end: По умолчанию print после вывода добавляет перенос на новую строку \n. Это тоже можно изменить, чтобы следующие выводы print продолжались на той же строке.
    print("Привет, ", end="")
    print("мир!")
    # Вывод будет в одну строку: Привет, мир!
    
main.py
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
Тест 6
Тест 7
Тест 8
Тест 9
Тест 10
Решение разработчика
# Считываем три стороны треугольника из одной строки
a, b, c = map(float, input().split())

# Вычисляем полупериметр (p)
p = (a + b + c) / 2

# Вычисляем площадь по формуле Герона
# Используем ** 0.5 для извлечения квадратного корня
area = (p * (p - a) * (p - b) * (p - c)) ** 0.5

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

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

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

AD

Реклама

red-snake blue-snake green-snake

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

Помощник ИИ

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