SOS pour un programme

barou_sanogo Messages postés 27 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je suis nouveau sur Python, version 3.8.11

Je ne parviens pas à exécuter convenablement le programme ci-dessous:

#coding: Utf8

def menu():
    print("""1 : Achat de medicament
2 : Approvisionnement en medicaments
3 : Etats des stocks et des credits
4 : Quitter""")
 
    while True:
        try:
            choix = int(input("Entrez votre choix: "))
            if choix in range(1, 5):
                break
        except ValueError:
            continue
 
    return choix
 
client = ("Oumar",0.0)
client = ("Kadiatou",0.0)
 
Medicament = ("Aspirine", 20.40, 5)
Medicament = ("Aspegic", 19.15, 5)
achat = ("clients", "medicaments")
approvisionnement = ("medicaments")

while True:
 
    choix = menu()
 
    if choix == 1:
        achat(clients, medicaments)
    elif choix == 2:
        approvisionnement(medicaments)
    elif choix == 3:
        affichage(clients, medicaments)
    else:
        break
 
quitter()


Voici le résultat:

1 : Achat de medicament
2 : Approvisionnement en medicaments
3 : Etats des stocks et des credits
4 : Quitter
Entrez votre choix:  1


Le problème:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-9-b6180252b82a> in <module>
     30 
     31     if choix == 1:
---> 32         achat(clients, medicaments)
     33     elif choix == 2:
     34         approvisionnement(medicaments)

NameError: name 'clients' is not defined

1 réponse

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
     
    Bonjour,

    Comme le dit fort justement python, la variable
    clients
    n'est pas déclarée.

    De plus le programme semble incomplet, car il manque aussi certaines fonctions comme
    affichage
    ,
    achat
    ,
    approvisionnement
    , et
    quitter
    .

    Bref, sans avoir tout le code, difficile d'être catégorique, mais j'imagine que
    • tu devrais renommer
      client
      et
      client1
      (ligne 19) et
      client2
      (ligne 20) ;
    • tu as oublié (ligne 21) une instruction du genre
      clients = [client1, client2]
      (pour construire une liste qui contient ces deux clients).


    À noter ensuite que ce ne sera pas le seul problème :
    • sur le même principe, tes variables
      Medicament
      devraient sans doute être renommées
      medicament1
      et
      medicament2
      . Note au passage qu'en python, les noms de variables sont écrits en minuscules (les noms qui commencent pas une majuscules sont normalement réservés aux classes).
    • ligne 24 et 25, tu déclares deux tuples
      achat
      et
      approvisionnement
      , mais lignes 32 et 34 tu les utilises comme des fonctions, ce qui est incohérent.


    Exemple :

    def approvisionnement(medicaments):
      print(medicaments)


    Bonne chance
    0