Aide en python

A voir également:Aide en pythonN python ✓ - Forum - Python Carré python - Forum - Python Python nombre pair ✓ - Forum - Python Python retour à la ligne code - Forum - Python Lire fichier csv python - Conseils pratiques - Python

Bonjour,

J'ai un programme en python à faire (pour gérer les stock d'un magasin) et j'ai un problème pour une fonction.

Je vous donne ici l'énoncé suivis des fonctions de mon programme :

Dictionnaires :
lesPrix = {"perçeuse":60,"ampoule":3.5,"clous":1.99,"vis":2.20}
leStock = {"perçeuse":15,"ampoule":75,"vis":300,"clous":400}
lesDepts = {"quincaillerie":leStock,"outillage":{"perçeuse":5,"visseuse":8}}

Q1 : ""Spécifier puis ´ écrire une fonction ´ informations stocks qui retourne, a partir des prix des `
articles et du nombre d’articles en rayon, les trois informations suivantes (dans l’ordre indique) : ´
— le montant total de marchandises en rayon;
— le nbre total d’articles en rayon;
— le prix moyen d’un article.
On considerera qu’un article en rayon dont on ne conna ` ˆıt pas le prix coute 1 euro; s’il n’y a pas d’articles ˆ
en rayon, le prix moyen d’un article est zero

Note : On peut retourner un tuple facilement avec l’operateur ´ , : si a, b et c sont trois variables
dans une fonction, l’instruction return a,b,c retourne un tuple compose de leurs trois valeurs. ""

  def informations_stocks(stock,prix):      total = 0     articles = 0     for i in stock:         if i in prix:             total+= stock[i] * prix[i]          else:             total += stock[i]         articles += stock[i]             moyen = total / articles         return total,articles,moyen



Q2 "". Specifier puis ´ ecrire une fonction ´ info depts qui retourne les trois informations prec´ edentes ´
pour chaque departement.""

 def info_depts(dept,prix):     dic = {}     for i in dept:         dic[i] = informations_stocks(dept[i],prix)             return dic 


Jusque là, mes fonctions fonctionnent parfaitement.

Mais à partir de là l'énoncé dit :

""Specifier puis ´ ecrire une fonction ´ index articles qui retourne, pour chaque article, les departements ´
dans lesquels ont peut le trouver.
Exemple :
>>> index_du_magasin = index_articles(lesDepts)
>>> index_du_magasin
{’ampoule’: [’quincaillerie’], ’vis’: [’quincaillerie’],
’perc¸euse’: [’quincaillerie’, ’outillage’],
’visseuse’: [’outillage’], ’clous’: [’quincaillerie’]}""


Voici ce que j'ai fait :
 def index_articles(dept):     dic = {}     for i in leStock:         for key in dept.items():             dic[i] = leStock[i]             dic[i] = key #dept[j]     return dic 

Seulement ce qui est demandé (exemple à l'appui) ne correspond absolument pas à ce que j'ai en utilisant ma fonction :

Exemple :
>>> index_du_magasin = index_articles(lesDepts)
>>> index_du_magasin
{’ampoule’: [’quincaillerie’], ’vis’: [’quincaillerie’],
’perçeuse’: [’quincaillerie’, ’outillage’],
’visseuse’: [’outillage’], ’clous’: [’quincaillerie’]}


Si vous pouviez corriger ma fonction ou me donner une fonction qui fait ce qui est demandé, cela m'arrangerais énormément ! (en expliquant bien sur ce que vous avez fait pour m'aider à comprendre).

J’espère que j'ai été assez clair et je vous remercie à l'avance pour vos réponses.

Cordialement,

EDIT : Déplacement de la discussion dans le bon forum ET ajout des balises de code !

Forum

A voir également:Aide en pythonN python ✓ - Forum - Python Carré python - Forum - Python Python nombre pair ✓ - Forum - Python Python retour à la ligne code - Forum - Python Lire fichier csv python - Conseils pratiques - Python

Web: www.shapebootstrap.net

1 réponse

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonsoir.

Teste ceci :

for key in dept.items(): print(key)


for key in dept.keys(): print(key)


for key in dept: print(key)


for value in dept.values(): print(value)


Cela te permettra de comprendre ton erreur.

Reply
réponses:
  • auteur

    Bonsoir,

    Tout d'abord, merci pour ces aides qui m'ont permis d'un peut mieux comprendre (je n'avais pas connaissance des .keys et .values) Mais je n'y arrive toujours pas:

    voilà mon code :

     def index_articles(dept):     dic = {}     for i in leStock:         for key2 in dept.keys():             for value in dept.values():         #for j in lesDepts:                 dic[i] = leStock[i]                 if dic[i] == value:                     dic[i] = key2 #dept[j]                 else :                     dic[i] = key     return dic  


    Je me retrouve avec:

     {'perçeuse': 'outillage', 'ampoule': 'outillage', 'vis': 'outillage', 'clous': 'outillage'}


    Lorsque je lance la fonction, je n'arrive pas a faire spécifier le fait que l'outil se trouve dans outillage ou dans la quincaillerie.

    Si vous avez d'autres pistes je suis preneur.

  • auteur

    L'exercice demande d'utiliser uniquement les départements, pas le stock, donc la fonction doit recevoir en paramètre les départements, les parcourir afin de grouper les départements selon les articles.

    def index_articles(depts):     articles = {} # article en clé, departments en valeurs     # Parcours des departments et de leurs stocks     for dept, stock in depts.items():         # Parcours des articles du département         for article in stock:             # Si l'article n'existe pas dans le dict. articles             # On le crée avec pour valeur une liste             if article not in articles:                 articles[article] = []             # Ajout du départ. à la liste             articles[article].append(dept)     return articles                # Affichage for art, depts in index_articles(lesDepts).items():     print(art, depts)

  • auteur

    Bonjour, je vous remercie vivement pour votre aide !

    j'ai pu avancer dans mes exercices et je suis de nouveau bloqué à une question :

    Specifier puis ´ ecrire une fonction ´ permuteListe(uneListe) qui echange successi- ´
    vement chaque el´ ement de la liste (l’ ´ el´ ement au rang 0, puis au rang 1, puis . . .) avec un autre ´ el´ ement ´
    de la liste choisi au hasard. La liste doit pouvoir contenir n’importe quel type d’el´ ement. La liste donn ´ ee´
    en parametre est modifi ` ee par cette fonction

    Voici mon programme :

     def permuteListe(uneListe):          for i in range(len(uneListe)):         x = randint(1, len(uneListe)-1)         move1 = uneListe[x]                 uneListe[x] = uneListe[i]         uneListe[i] = move1     return uneListe 


    Jusque là ça marche mais la question suivante est problématique :

    A l’aide de la fonction précédente, spécifier puis ´ écrire une fonction ´ dictPerm() qui
    fabrique et retourne un dictionnaire de permutation (tire au hasard) pour les lettres majuscules

    Exemple d’utilisation :
    > perm = dictPerm()
    > perm
    {’Z’: ’A’, ’X’: ’N’, ’Y’: ’E’, ’V’: ’J’, ’W’: ’H’, ’T’: ’L’, ’U’: ’C’,
    ’R’: ’O’, ’S’: ’Q’, ’P’: ’V’, ’Q’: ’Y’, ’N’: ’M’, ’O’: ’U’, ’L’: ’F’,
    ’M’: ’K’, ’J’: ’I’, ’K’: ’R’, ’H’: ’T’, ’I’: ’B’, ’F’: ’Z’, ’G’: ’W’,
    ’D’: ’P’, ’E’: ’G’, ’B’: ’X’, ’C’: ’D’, ’A’: ’S’}

    Pour cette question, vous utiliserez la variable ascii_uppercase du module string qui contient
    la chaîne de caractères des lettres de l’alphabet en majuscules .

    Voici mon programme :
     def dicPerm():     ALPHABET = string.ascii_uppercase     dic =  {}     for i in range(len(ALPHABET)):         dic[ALPHABET[i]] = ALPHABET[i]     print(dic) 


    je voudrais savoir comment me servir (où placer le permuteListe) du programme précédent pour mélanger les lettres dans le dictionnaire.

    Cordialement,

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed