Сама задача находится на простейшем уровне, вот она собственно: Вам предлагается создать функцию, которая принимает два параметра. Первый параметр, nums, представляет собой массив чисел. Второй параметр, target – это одно число. Выходные данные функции должны быть двухэлементным массивом, который представляет собой пару чисел в nums, которые при суммирование равны target.
Естественно я создал нужную функцию, которая спокойно работает, вот только один момент меня озадачил, в VSCode вылетает ошибка:
Operator "+" not supported for types "int | None" and "int | None"
Operator "+" not supported for types "int" and "None"
Operator "+" not supported for types "None" and "int"
Operator "+" not supported for types "None" and "None"
Сам код выглядит так:
def twosum(nums: list[int], target: int):
nums_dict = dict(enumerate(nums))
for i in nums_dict:
for o in nums_dict:
if nums_dict.get(i) + nums_dict.get(o) == target and i != o:
return [i,o]
Он работает, можете проверить, но что за ошибка тогда?
Python
Задание с LeetCode через Python3
def twosum(nums, target):
for i in range(len(nums) - 1):
for j in range(i + 1, len(nums)):
if nums[i] + nums[j] == target: return [nums[i], nums[j]]
И никаких словарей.Ошибки, которые вы видите, связаны с возможностью наличия значения `None` в переменных `nums_dict.get(i)` и `nums_dict.get(o)`.
Проблема заключается в том, что метод `.get()` словаря возвращает значение по указанному ключу, но если ключа нет в словаре, то он возвращает значение `None`. При сложении `None` с числом возникает ошибка, поскольку оператор `+` не поддерживает сложение `None` с числом.
Для решения проблемы вам следует добавить проверку наличия значения в словаре перед сложением. Можно использовать условные выражения или проверку на равенство `None` для предотвращения возникновения ошибок.
Вот исправленный код с добавленными проверками:
```python
def twosum(nums: list[int], target: int):
nums_dict = dict(enumerate(nums))
for i in nums_dict:
for o in nums_dict:
num1 = nums_dict.get(i)
num2 = nums_dict.get(o)
if num1 is not None and num2 is not None and num1 + num2 == target and i != o:
return [i, o]
```
Теперь код будет работать без ошибок, и вы получите ожидаемый результат.
Проблема заключается в том, что метод `.get()` словаря возвращает значение по указанному ключу, но если ключа нет в словаре, то он возвращает значение `None`. При сложении `None` с числом возникает ошибка, поскольку оператор `+` не поддерживает сложение `None` с числом.
Для решения проблемы вам следует добавить проверку наличия значения в словаре перед сложением. Можно использовать условные выражения или проверку на равенство `None` для предотвращения возникновения ошибок.
Вот исправленный код с добавленными проверками:
```python
def twosum(nums: list[int], target: int):
nums_dict = dict(enumerate(nums))
for i in nums_dict:
for o in nums_dict:
num1 = nums_dict.get(i)
num2 = nums_dict.get(o)
if num1 is not None and num2 is not None and num1 + num2 == target and i != o:
return [i, o]
```
Теперь код будет работать без ошибок, и вы получите ожидаемый результат.
def twosum(nums: list[int], target: int):
nums_dict = dict(enumerate(nums))
for i in nums_dict:
for o in nums_dict:
if nums_dict.get(i, 0) + nums_dict.get(o, 0) == target and i != o:
return [i, o]
# Пример использования функции
nums = [2, 7, 11, 15]
target = 9
result = twosum(nums, target)
print(result)
nums_dict = dict(enumerate(nums))
for i in nums_dict:
for o in nums_dict:
if nums_dict.get(i, 0) + nums_dict.get(o, 0) == target and i != o:
return [i, o]
# Пример использования функции
nums = [2, 7, 11, 15]
target = 9
result = twosum(nums, target)
print(result)
Iurie Lapicus
Спасибо за более облегченное решение
Похожие вопросы
- почему не работает код ???(Python3)
- Помогите с задачей, на python (сайт Leetcode)
- Какие задания из ЕГЭ по информатике можно решить вручную (без программирования)?
- Задание яндекс практикум на языке python
- Помогите пожалуйста сделать задание в Яндекс.практикум Python. Завис на задании.
- Python. Пожалуйста помогите решить задание!!!
- Помогите с задачей по Python. Одно задание осталось, что-то не получается.
- Помогите пожалуйста с заданием на python
- 25 задание ЕГЭ информатика. Всех четырёх часов не хватит, чтобы дождаться ответа на задачу. Подаю сигнал бедствия!
- Помогите пожалуйста решить задание.
nums_dict = dict(enumerate(nums))
for i in nums_dict:
for o in nums_dict:
num1 = nums_dict.get(i)
num2 = nums_dict.get(o)
if num1 is not None and num2 is not None and num1 + num2 == target and i != o:
return [i, o]