ЛР_1

parents
# Лабораторная работа №2. Сумма двух
## Задача 1
### 1.1 Постановка задачи
Дан массив целых чисел `nums` и целочисленное значение переменной `target` , верните индексы двух чисел таким образом, чтобы они в сумме давали `target`. У каждого входного набора может не быть решений и может быть только одно решение, если есть элементы дающие в сумме `target`. Вы не можете использовать один и тот же элемент дважды (и соответственно индекс тоже). Вы можете вернуть ответ в любом порядке нахождения индексов.
### 1.2 Код программы
Была написана функция `check_sum`, проходящая по элементам данного массива, для каждого элемента проверялась сумма с каждым из последующих элементов на равенство входному параметру `target`. Функция возращает массив из индексов элементов, дающих в сумме `target`, если такие числа не найдены, возвращает пустой массив.
func.py:
```python
def check_sum(nums, target):
for i in range(len(nums)):
for j in range(i + 1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]
return []
```
Также были написаны юнит-тесты, тестирующие функцию `check_sum`. Функция `assertEqual()` сравнивает результат работы функции с ожидаемым ответом.
test.py:
```python
import unittest
from func import check_sum
# Тесты
class TestMath(unittest.TestCase):
def test_1(self):
self.assertEqual(check_sum([2,7,11,15], 9), [0, 1])
def test_2e(self):
self.assertEqual(check_sum([3,2,4], 6), [1, 2])
def test_3(self):
self.assertEqual(check_sum([3,3], 6), [0, 1])
def test_4(self):
self.assertEqual(check_sum([-1, -2, -3, -4, -5], -8), [2, 4])
def test_5(self):
self.assertEqual(check_sum([10, -10, 3, 7], 0), [0, 1])
def test_6(self):
self.assertEqual(check_sum([1, 2, 3], 10), [])
def test_7(self):
self.assertEqual(check_sum([1, 2, 3, 4, 5, 100], 105), [4, 5])
def test_8(self):
self.assertEqual(check_sum([1, 3, 2, 4, 5], 6), [0, 4])
# Запуск тестов
unittest.main(argv=[''], verbosity=2, exit=False)
```
### 1.3 Результаты работы
```
test_1 (__main__.TestMath.test_1) ... ok
test_2e (__main__.TestMath.test_2e) ... ok
test_3 (__main__.TestMath.test_3) ... ok
test_4 (__main__.TestMath.test_4) ... ok
test_5 (__main__.TestMath.test_5) ... ok
test_6 (__main__.TestMath.test_6) ... ok
test_7 (__main__.TestMath.test_7) ... ok
test_8 (__main__.TestMath.test_8) ... ok
----------------------------------------------------------------------
Ran 8 tests in 0.001s
OK
```
## Трофимцова Екатерина, 2 курс, группа ИВТ-1, подгруппа 2
\ No newline at end of file
def check_sum(nums, target):
for i in range(len(nums)):
for j in range(i + 1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]
return []
\ No newline at end of file
import unittest
from func import check_sum
# Тесты
class TestMath(unittest.TestCase):
def test_1(self):
self.assertEqual(check_sum([2,7,11,15], 9), [0, 1])
def test_2e(self):
self.assertEqual(check_sum([3,2,4], 6), [1, 2])
def test_3(self):
self.assertEqual(check_sum([3,3], 6), [0, 1])
def test_4(self):
self.assertEqual(check_sum([-1, -2, -3, -4, -5], -8), [2, 4])
def test_5(self):
self.assertEqual(check_sum([10, -10, 3, 7], 0), [0, 1])
def test_6(self):
self.assertEqual(check_sum([1, 2, 3], 10), [])
def test_7(self):
self.assertEqual(check_sum([1, 2, 3, 4, 5, 100], 105), [4, 5])
def test_8(self):
self.assertEqual(check_sum([1, 3, 2, 4, 5], 6), [0, 4])
# Запуск тестов
unittest.main(argv=[''], verbosity=2, exit=False)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment