2016-12-03 3 views
-2

Вот код. Пожалуйста, помогите мне исправить.Почему я получаю IndexError в этом маленьком коде Python?

#!/usr/bin/env python 

import sys 

def print5times(line_to_print): 
     for count in range(0,5) : 
       print line_to_print 

print5times(sys.argv[1]) 

при запуске этого кода я получаю эту ошибку:

Traceback (most recent call last): 
    File "./func.py", line 9, in <module> 
    print5times(sys.argv[1]) 
IndexError: list index out of range 
+0

Это шутка я полагаю, не так ли? :) – favoretti

+0

Вы понимаете, что такое 'sys.argv'? –

+0

Кроме того, 'print5times' является нечетным именем для функции, которая работает в 9 раз –

ответ

1

sys.argv[1] дает вам второй аргумент, передаваемый в командной строке.

IndexError исходит из того факта, что вы не передаете достаточно аргументов в свой сценарий.

Даже если вы сделали это правильно, с вашим текущим фрагментом, вы будете печатать аргумент 9 раз, а не только 5, как предлагает ваше имя функции.

0

Посмотрите sys.argv[1] meaning in script

Now in your Python code, you can use this list of strings as input to your program. Since lists are indexed by zero-based integers, you can get the individual items using the list[0] syntax. For example, to get the script name:

script_name = sys.argv[0] # this will always work. 

Although that's interesting to know, you rarely need to know your script name. To get the first argument after the script for a filename, you could do the following:

filename = sys.argv[1] 

This is a very common usage, but note that it will fail with an IndexError if no argument was supplied.

 Смежные вопросы

  • Нет связанных вопросов^_^