2016-12-03 1 views
-2

Voici le code. Veuillez m'aider à le corriger.Pourquoi est-ce que j'obtiens IndexError dans ce petit code 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]) 

lors de l'exécution de ce code, je reçois cette erreur:

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

Ceci est une blague je suppose, non? :) – favoretti

+0

Comprenez-vous ce qu'est 'sys.argv'? –

+0

En outre, «print5times» est un nom impair pour une fonction qui boucle 9 fois –

Répondre

1

sys.argv[1] vous donne le deuxième argument passé sur la ligne de commande.

Le IndexError vient du fait que vous ne transmettez pas assez d'arguments à votre script.

Même si vous l'avez fait correctement, avec votre extrait actuel, vous devez imprimer l'argument 9 fois au lieu de 5, comme l'indique le nom de votre fonction.

0

Jetez un oeil à 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.