Как избежать ошибки для сложного метода раунда.? - PullRequest
0 голосов
/ 01 апреля 2020

для этого кода:

def area(d, l): 
x=((d**2)-(l**2))**0.5
#b=sqrt(x)
rec_area=float(round(l*x, 2))
if d<=l and d<=x:
    print("'/Not a rectangle'/")
elif l==0.0 and d==0.0:
    print(""'/Not a rectangle'/"")
else:
    return rec_area
pass
print(area(12, 5))

Я получаю ошибку:

type complex doesn't define __round__ method

Как ее решить. Как я могу решить эту проблему. Я пытаюсь получить область и там будет до двух десятичных разрядов. Я также хочу найти площадь прямоугольника, когда предоставляется одна диагональ и одна сторона прямоугольника. Если входная диагональ меньше или равна длине стороны, верните «Не прямоугольник». Если результирующая область имеет десятичные дроби, округлите ее до двух мест.

Пожалуйста, скажите мне, как удалить ни одного из выходных данных.

1 Ответ

0 голосов
/ 01 апреля 2020

Вы получаете 'none' в случае, если диагональ меньше, чем сторона, тогда ваша функция печатает «Not a rectangle» и возвращает «none» в основную функцию. Есть два способа справиться с этим: вы всегда можете распечатать результат внутри своей функции и не использовать печать в вызывающем коде, или вы можете вернуть строку из своей функции и напечатать ее в основном коде. Решение 1:

def area(d, l): 
    if d<=l or l == 0.0:
        print("'/Not a rectangle'/")
    else:
        x=((d**2)-(l**2))**0.5
        rec_area=float(round(l*x, 2))
        print(rec_area)

area(12, 5)

Решение 2:

def area(d, l): 
    if d<=l or l == 0.0:
        return "'/Not a rectangle'/"
    else:
        x=((d**2)-(l**2))**0.5
        rec_area=float(round(l*x, 2))
        return rec_area

print(area(12, 5))
...