Sobes.tech
Назад к вопросам
Middle
6

# 1. В чем отличие между == и is? # 2. Что мы получим? #print(['123', 'да'][False][1]) # 3. Что мы получим? #a = ([1, 2, 3], 'qweqwe') #print(hash(a)) # 4. Что не так? #elementText = "Hello"; #type = str #for elem in range(len(elementText)): # print(elementText[elem])

Компании, где спрашивали
sber tech

Ответ от нейросети

sobes.tech AI

  1. В Python оператор == проверяет равенство значений объектов, а is — проверяет, указывают ли две переменные на один и тот же объект в памяти.
a = [1, 2, 3]
b = a
c = a.copy()
print(a == c)  # True, значения равны
print(a is c)  # False, разные объекты
print(a is b)  # True, одна ссылка
  1. Выражение print(['123', 'да'][False][1]):
  • ['123', 'да'] — список из двух строк.
  • Индекс False при приведении к целому равен 0, значит выбирается '123'.
  • Далее [1] — второй символ строки '123', то есть '2'.

Вывод: 2

  1. Переменная a = ([1, 2, 3], 'qweqwe') — кортеж, содержащий список и строку. Функция hash() требует, чтобы все элементы были хешируемыми. Список — изменяемый тип, не хешируемый. Поэтому hash(a) вызовет ошибку TypeError: unhashable type: 'list'.

  2. В коде:

elementText = "Hello"
type = str
for elem in range(len(elementText)):
    print(elementText[elem])

Проблема в том, что переменная type переопределяет встроенную функцию type(). Это может привести к ошибкам в дальнейшем коде. Лучше использовать другое имя переменной, например, element_type.

Также можно упростить цикл:

for char in elementText:
    print(char)

Это более питонично и читаемо.