Лямбда-функция возвращает неверное значение в Python 3.x - PullRequest
0 голосов
/ 20 июня 2020

Я учусь Python. И я только что узнал о лямбда-функции.

Проблема:

  1. Когда я пытаюсь сделать Quadrati c Equation Roots Checker , Я не могу использовать операторы «если». Функция "d" вызывает эту ошибку - TypeError: '<' не поддерживается между экземплярами 'function' и 'int' </li>
  2. Почему эта строка появляется в выводе: <function <lambda> at 0x015AA100>


Код:

import math

d = lambda a, b, c : (b**2-(4*a*c))
print("Equation's Form:  ax2 + bx + c")
print("Discriminant = ", d(3,4,9))
print(d)

Это результат:

Equation's Form:  ax2 + bx + c
Discriminant =  -92
<function <lambda> at 0x015AA100>

Я хочу добавить эти строки в код, но он отображает указанную выше ошибку:

if d < 0:
    print("Roots are unequal and imaginary")
elif d == 0:
    print("Roots are real and equal")

if d > 0 and (d - int(d) == 0):
    print("D is > 0 and Perfect Square - Thus Roots are Real, unequal and rational")
else:
    print("D is > 0 but not a Perfect Square - Thus Roots are Real, unequal and irrational")

1 Ответ

0 голосов
/ 20 июня 2020

«d» - это лямбда, и вы пытаетесь распечатать функцию. Вам нужно вызвать функцию с правильными аргументами, чтобы получить целое число и проверить, равно ли результат <0, == 0, et c .. </p>

dd = d(3,4,9)

if dd < 0:
    print("Roots are unequal and imaginary")
elif dd == 0:
    print("Roots are real and equal")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...