Как минимум один из feet_entry1
, feet_entry2
, feet_entry3
должен возвращать ''
при вызове .get()
.
Если вы попытаетесь в интерактивном режиме, вы получите то же самоеошибка:
>>> int('')
Traceback (most recent call last):
ValueError: invalid literal for int() with base 10: ''
Это можно исправить, отфильтровав пустые значения:
sum(int(e.get()) for e in (feet_entry1, feet_entry2, feet_entry3)
if e.get())
if e.get()
преобразует значение в логическое значение.Пустые строки оцениваются как False
, поэтому они игнорируются.
См. Документацию для Понимания списка :
>>> vec = [-4, -2, 0, 2, 4]
>>> # filter the list to exclude negative numbers
>>> [x for x in vec if x >= 0]
[0, 2, 4]