Почему выдаёт Runtime ошибку?

Есть задача:
Васе на дом задали задачу по геометрии, по трем сторонам треугольника вычислить его периметр и площадь. Но он очень не любил геометрию и попросил вас решить эту задачу.
Формат входных данных
Во входном файле записано 3 натуральных числа через пробел, не превосходящих 1000 - длины сторон треугольника.
Формат выходных данных
В первую строку выходного файла выведите число -1, если треугольника с данными сторонами не существует (Вася неправильно списал условие задачи :), иначе через пробел выведите периметр и площадь данного треугольника.
Площадь треугольника выводить с точностью до 5 знаков после запятой (точки).

Формат ввода
3 4 5
Формат вывода
12 6.00000

Я сделал её решение:
import math

file = open("input.txt", "r")
text = file.read()
file.close()
a, b, c = [int(n) for n in text.split(" ")]

out = ""
if not (a < b + c and b < a + c and c < a + b):
    out = "-1"
else:
    p = 0.5 * (a + b + c)
    h = 2 * math.sqrt(p * (p-a) * (p-b) * (p-c)) / a
    out = str(a + b + c) + " " + ("%.5f" % (a * h / 2))

file = open("output.txt", "w")
file.write(out)
file.close()

Только на третьем тесте моя программа выдаёт ошибку..
Что может быть не так?
P. S. Входные данные неизвестны.
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
half-life
@half-life
Как то так
import math
import os

INPUT_FILE = 'input.txt'
OUTPUT_FILE = 'output.txt'
NUMBER_THRESHOLD = 1000

if __name__ == '__main__':
    if not os.path.exists(INPUT_FILE) or not os.path.isfile(INPUT_FILE):
        raise FileNotFoundError
    with open('input.txt') as file:
        text = file.read()
    if not text:
        raise ValueError('File is empty')
    try:
        a, b, c, *_ = [int(n) for n in text.strip().split(" ") if n.isdigit() and int(n) < NUMBER_THRESHOLD]
    except ValueError:
        raise ValueError('Wrong input data')

    out = ""
    if not (a < b + c and b < a + c and c < a + b):
        out = "-1"
    else:
        p = 0.5 * (a + b + c)
        h = 2 * math.sqrt(p * (p - a) * (p - b) * (p - c)) / a
        out = f'{str(a + b + c)} {("%.5f" % (a * h / 2))}'

    with open(OUTPUT_FILE, 'w') as file:
        file.write(out)

Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bbkmzzzz
трейс ошибки-то где?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы