dzhem911
@dzhem911
I know H.T.M.L. ;)

Равны ли два условия?

Сосем песочница, но help
1. Чем является условие if start: # Что этов приведенном ниже коде?
string = "Давайте покажем применение срезов на практике"
start = None
while start !="":
    start = input(f'Введите число от 0 до {len(string) - 1}')
    if start: # Что это
        start = int(start) 
        end = int(input(f'А теперь введите число от 1 до {len(string)},'
                      f' ну или до бесконечности, как угодно...'))
        print(string[start:end])

Если давать любую цифру переменной start, то программа работает как следует.
И только при вводе Enter, программа завершается без ошибок.
2. Соответственно что передается при вводе пустого Enter?
3. Чем является пустая строка, ведь она ни False, ни True, ни None
y = ""
print(y == False) #False
print(y == None) #False
print(y == True) #False
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
ri_gilfanov
@ri_gilfanov
Web- and desktop-developer
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.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
1) if start: экивалентно if start is not None

2) передается пустая строка, сделай принт - хз есть там символ перевода или нет, наверно, нет

3) сделай принт type(y) увидишь что тип у нее не boolean (это где тру фалс) и не нон - она же есть
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы