• # Opérateur *

    Posté par (site web personnel) . En réponse au message Calcul de matrices, erreur "index out of range". Évalué à 7. Dernière modification le 20 novembre 2018 à 17:44.

    Soit tu déclares ta fonction comme prenant un seul paramètre (un tuple) et tu l'appelles avec 1 seul paramètre:

    def get_row_size(args): # <=== pas de '*'
     # ...
    get_row_size(sys.argv)

    Soit tu déclares ta fonction comme prenant N paramètres, et tu l'appelles en "explosant" le tuple :

    def get_row_size(*args):
     # ...
    get_row_size(*sys.argv) # <== remarque le '*'

    Actuellement tu mélanges les 2, et ta fonction reçoit bien un seul argument (seul args[0] ne provoquera pas d'erreur, et sera un tuple avec tous tes arguments).

    Quelques remarques:

    • Ce n'est pas très propre que ton programme plante salement si on ne lui passe pas assez d'argument. Tu es censé faire un if len(args) > 3 avant de faire un args[3] par exemple.
    • Comme vérifier tous les arguments c'est pénible, tu peux regarder du côté de argparse qui générera de belles erreurs et un message de doc sur les arguments
    • Attention tu parles de "4eme élément" en écrivant args[4] ; il s'agit bien du 5ème élément (vu que les indices commencent à 0).