Skip to content

Passage d'arguments#

Exemples

note1 = input("Donner une note : ")
note2 = input("Donner une note : ")
note3 = input("Donner une note : ")
moy = (int(note1)+int(note3)+int(note2))/3
print ("La moyenne est ",moy)

On souhaite passer les valeurs note1, note2, note3 en argument au programme

Exemples

liste_animaux = ['vache','souris','levure','bacterie']
for nom in listeAnimaux:
print(nom)

On souhaite passer liste_animaux en argument au programme

Jusqu'à présent, on utilise des données fixes ou demandées à l'utilisateur avec input().

On veut passer des arguments/paramètres au programme :

  • pour permettre l'exécution du programme avec différentes données sans avoir à modifier le script
  • pour éviter l'interaction avec l'utilisateur

Récupérer les valeurs passées en argument au programme :
Utilisation de la liste sys.argv du module sys (import sys)

  • sys.argv[0] ⇒ nom du programme
  • sys.argv[1]...sys.argv[n] ⇒ valeurs des arguments

Exemple pour la commande python exo3.py 15 17 8 :

  • sys.argv[0] est égal à "exo3.py"
  • sys.argv[1] est égal à "15"
  • sys.argv[2] est égal à "17"
  • sys.argv[3] est égal à "8"

Vérifier qu'on a le bon nombre d'arguments = taille de sys.argv

Si on a 3 arguments, alors len(sys.argv) == 4

Si on a pas le bon nombre, quitter le programme :

sys.exit()
sortie normale
sys.exit("Message d'erreur")
sortie avec erreur (met le code d'erreur du shell à 1)

Pratique 5 : le passage de paramètre#

  • Reprendre le programme exo4_a.py et créer un nouveau programme python exo5_arg.py qui permettra de donner la séquence nucléique étudiée en argument du programme.

  • Modifier le programme précédent exo5_arg.py afin de vérifier la présence du bon nombre d'arguments

  • Créer un programme python exo5_comp.py qui permet de comparer 2 séquences données en argument et qui affiche le nombre de résidus/nucléotides identiques à la même position entre les 2 séquences (on considère que les 2 séquences sont de même longueur)

    Exemple :
    - avec les séquences ATTGCTA et ATTGCTC, le programme doit afficher 6 résidus identiques
    - avec les séquences TAATTGT et ATTGCTC, le programme doit afficher 0 résidus identiques

  • Modifier le programme précédent exo5_comp.py afin d'afficher le pourcentage d'identité (nb résidu identique / nb de résidu total)

  • Modifier le programme précédent exo5_comp.py afin d'autoriser des séquences de longueurs différentes