None и пустые значения

Тренажер по Python для пользователей с начальным уровнем подготовки.

Тренажер по Python

В Python есть особое значение — `None`. Оно обозначает "ничего" или "отсутствие значения". Это не ноль, не пустая строка и не `False`, а совершенно самостоятельный объект. Понимание `None` и других "пустых" или ложноподобных значений — ключ к написанию надежного и читаемого кода. Вы научитесь использовать `None` в качестве заглушки, возвращаемого значения из функций и аргумента по умолчанию. Эти задания помогут вам разобраться, как Python определяет "истинность" и "ложность" разных типов данных, что является фундаментальной концепцией для управления логикой программы. Пройдя тренажер, вы сможете уверенно отличать `None` от `0` или пустых коллекций и правильно использовать их в своих проектах.

Список тем

Присваивание значения None

id: 39955_task_none_1

В Python существует специальное значение `None` для обозначения отсутствия чего-либо. Это как пустая ячейка, которая ждет, чтобы ее заполнили. Ваша задача — присвоить переменной `user_status` значение `None`, чтобы показать, что статус пользователя пока не определен.

Заполните пропуски
# Статус пользователя еще не определен
user_status = input1S

print(user_status)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

None в логических выражениях

id: 39955_task_none_3

Значение `None` в логическом контексте (например, в условии `if`) интерпретируется как `False`. Проанализируйте код и напишите, что он выведет на экран.

Что должно получиться?
result_from_db = None

if result_from_db:
    print("Данные получены")
else:
    print("Данных нет в базе")
Сообщения
Проверить
Показать подсказку

Правильная проверка на None

id: 39955_task_none_4

Сравнивать переменную с `None` через оператор `==` хоть и работает, но не является рекомендуемой практикой (согласно PEP 8). Правильный способ — использовать оператор `is`. Исправьте выделенную строку кода, чтобы проверка на `None` соответствовала лучшим практикам Python.

Найдите ошибку и исправьте
def check_value(value):
    if value == None:
        print("Значение не задано.")
    else:
        print(f"Значение: {value}")
 
check_value(None)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

None — это не False

id: 39955_task_none_5

Хотя `None` и `False` оба ведут себя как ложь в условиях `if`, это два совершенно разных объекта с разными типами. Что выведет код, который проверяет их идентичность с помощью оператора `is`?

Выберите правильный вариант ответа
print(None is False)
Сообщения
Проверить
Показать подсказку

Истинные и ложные значения

id: 39955_task_none_6

В Python многие "пустые" или "нулевые" значения ведут себя как `False` в логических выражениях. Их называют "ложноподобными" (falsy). Распределите предложенные значения по двум категориям в зависимости от того, как они поведут себя в условии `if`.

Перетяните элементы в соответствующие блоки
Ложноподобные (Falsy)
Истиноподобные (Truthy)
None
0
[]
"hello"
[1, 2]
'False'
""
1
{}
Сообщения
Проверить
Показать подсказку

Функция с None в качестве аргумента

id: 39955_task_none_7

`None` часто используется в качестве значения по умолчанию для изменяемых аргументов (как списки или словари). Это позволяет избежать неожиданного поведения. Расставьте строки в правильном порядке, чтобы создать функцию, которая добавляет тег в список. Если список тегов не передан, функция должна создать новый.

Расставьте строки в правильном порядке
tags_list.append(tag)
    if tags_list is None:
def add_tag(tag, tags_list=None):
    return tags_list
        tags_list = []
Сообщения
Проверить
Показать подсказку

Возвращение None из функции

id: 39955_task_none_8

Функции часто возвращают `None`, чтобы показать, что операция не удалась или результат не был найден. Заполните пропуски в функции `get_config`, которая ищет значение в словаре. Если ключ найден, функция должна вернуть его значение. В противном случае — `None`.

Нужно правильно расставить в пропуски предложенные варианты
config = {'host': 'localhost', 'port': 8080}

def get_config(key):
    if key in config:
        return input1S
    else:
        return input2S

# Пытаемся получить пароль, которого нет
password = get_config('password')
print(password)
config[key]
None
config
"Not Found"
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Пустые значения и их типы

id: 39955_task_none_9

В Python существует несколько видов "пустых" значений, помимо `None`. Каждое из них относится к своему типу данных. Сопоставьте литерал пустого значения в левой колонке с его правильным типом в правой.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
""
[]
{}
()
0
list (пустой список)
dict (пустой словарь)
int (целочисленный ноль)
str (пустая строка)
tuple (пустой кортеж)
Сообщения
Проверить
Показать подсказку

Использование `or` для значений по умолчанию

id: 39955_task_none_10

Оператор `or` возвращает первый истинный операнд или последний ложный, если все ложны. Это часто используется для задания значений по умолчанию. В коде допущена ошибка: `username` получает пустое значение `config_name`. Исправьте строку присваивания `username`, чтобы она получала `default_name`, если `config_name` пустое.

Найдите ошибку и исправьте
# Имя пользователя из конфига (может быть пустым)
config_name = ""
default_name = "Guest"
 
# Если config_name пусто, нужно использовать default_name
username = config_name
 
print(username)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
НайтиКурс.Ру