Я получаю индекс из-за ошибки границ, даже когда я пытаюсь вычесть один для списка (модульное тестирование) - PullRequest
0 голосов
/ 12 февраля 2019

Ошибка выхода за границы моего кода, даже если этого не должно быть (насколько я могу судить)

Я попытался вычесть 1 из n, что должно было бы начинаться с 0.

    import unittest
    import lecture.FirstProject


    class MyTestCase(unittest.TestCase):
        def testShipping(self):
            weights = [29, 30, 31, 31, 33]
            expected = [5, 5, 5.25, 5.5, 6]
            for n in weights:
                expect = expected[n]
                actual = lecture.FirstProject.computeShippingCosts(n)
                self.assertEqual(expect, actual, "failed test  %n")

Я ожидаю, что он проверит каждый из этих весов с ожидаемым ответом.

1 Ответ

0 голосов
/ 12 февраля 2019
 for n in weights:

Перебирает все значения в весах (29, 30, 31, 31, 33)

expect = expected[n]

пытается получить доступ к индексу n из списка expected, который не существует (индекс 29в 1-й итерации), таким образом вызывая исключение

Чтобы выполнить итерацию по обоим спискам, вы можете выполнить:

for weight, expect in zip(weights, expected):
    # do something with weight, expect

Чтобы выполнить итерацию с использованием индексов, вы можете выполнить

for n in range(0, len(weights)):
    # do something with weights[n], expected[n]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...