Как изменить переменную с NoneType на Float в лямбда-функции? - PullRequest
0 голосов
/ 02 марта 2020

Я пытался создать квадратную root функцию, используя код с веб-сайта , который объясняет, как создать калькулятор tkinter. Полный код программы должен быть в середине веб-сайта.

Я попытался повторно использовать код со знака равенства, чтобы создать квадратную кнопку root, которая бы имела квадрат * 1016. * все, что вводится в поле ввода. Я помещаю код в def __init__(self): вместе с остальным кодом. Вот код, который я добавил в программу:

sqButton = iCalc(self, TOP)
    for iEquals in "√":
        btniEquals = button(sqButton, LEFT, iEquals)
        btniEquals.bind('<ButtonRelease-1>', lambda e, s=self,
                            storeObj=display: math.sqrt(s.calc(storeObj)))

При попытке сделать это я получаю ошибку.

line 50, in <lambda> storeObj=display: math.sqrt(s.calc(storeObj)))             
TypeError: must be real number, not NoneType

I go к источнику проблемы, который является кодом над. Попытка изменить «лямбда» дала бы мне синтаксическую ошибку, поэтому я не уверен, что мне следует сделать, чтобы изменить ее так, чтобы она функционировала так, как ожидалось. Насколько я могу судить, "e" после функции дает мне NoneType, который останавливает работу кода, я попытался окружить s.calc(storeObj) в float, но это не устраняет ошибку, и я добавил импорт математики в верхней части программы, поэтому math.sqrt должен работать. Я не новичок в этом, поэтому я точно не знаю, что мне нужно изменить, чтобы это работало.

1 Ответ

0 голосов
/ 02 марта 2020

Вы можете написать лямбда-функцию, как указано ниже

func = lambda e: 0.0 if e == None else e
print(func(None))
print(func(1))

Результат

0.0
1
...