1. Чем является условие if start: # Что этов приведенном ниже коде?
1. В общем виде, выражение вида
if variable: по-умолчанию заменяет примерно такую конструкцию:
if (
variable is not None # ни ничего
and variable is not False # ни ложь
and variable != 0 # ни ноль
and variable != '' # ни пустая строка
and variable != [] # ни пустой список
and variable != {} # ни пустой словарь
and variable != tuple() # ни пустой кортеж
and variable != set() # ни пустое множество
):
В лекциях и литературе, это порой называют термином
falsy -- логичный набор значений для встроенных типов, которые в выражении
if variable: эквивалентны
False. В качестве наглядного примера,
if my_list: для проверки на пустой список
[] писать гораздо удобнее, чем
if len(my_list) != 0:.
В вашем случае, условие
if start: исключает срабатывание вложенного кода, как при пустой строке
'', так и при
None.
2. Соответственно что передается при вводе пустого Enter?
2. Передаётся пустая строка
'', что затем "присваивается" переменной
start. И так как условием выполнения цикла
while является
start != '', то в данном коде ввод пустой строки является способом выхода из цикла.
3. Чем является пустая строка, ведь она ни False, ни True, ни None
3. Пустая строка
'' имеет тип
str. Однако, см. выше про
falsy значения.
В общем, выражение
if start: покрывает и проверку
if start != '':, и ряд других проверок, описанных в пункте 1.