Вот несколько советов о том, как часто вы можете решить эту проблему самостоятельно :
Прочтите, что говорит вам сообщение об ошибке: «индекс списка вне диапазона».
Какой список? Два варианта (1) список, возвращаемый range (2) sys.argv
В этом случае это не может быть (1); невозможно вытащить эту ошибку из
for i in range(some_integer)
... но вы, возможно, этого не знаете, поэтому в общем случае, если в строке есть несколько вариантов выбора источника ошибки, и вы не видите, в чем причина, разбейте строку на две или более заявления:
num_things = sys.argv[2]
for i in range(num_things):
и снова запустите код.
К настоящему времени мы знаем, что sys.argv - это список. Какой индекс? Должно быть 2. Почему это выходит за пределы диапазона? Ответ на основе знаний: поскольку Python считает индексы списка от 0. Ответ на основе эксперимента: вставьте эту строку перед ошибочной строкой:
print list(enumerate(sys.argv))
Так что вам нужно изменить [2] на [1]. Тогда вы получите еще одну ошибку, потому что в range (n) n должно быть целым числом, а не строкой ... и вы можете справиться с этой новой проблемой аналогичным образом - дополнительный совет: посмотрите в range () Docs.