Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Comparer deux listes arithmétiques


Sujet :

Python

  1. #1
    Membre à l'essai
    Comparer deux listes arithmétiques
    Bonjour

    J'ai vraiment besoin de votre aide et je vous remercie en avance !

    J'essaie de faire un programme qui compare deux listes arithmétiques U et V .

    U augmente de 80 à chaque fois
    V est multipliée par 1.05 à chaque fois
    Ce programme va déterminer le mois où V dépasse U.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def contrat ():
      V=[1000]
      U=[1000]
      u=1000
      v=1000
      M=1
      while u>=v:
        u=u+80
        v=v*1.05
        M=M+1
        U.append(u)
        V.append(v)
      return M

  2. #2
    Membre à l'essai
    J'ai aussi ce script qui génère toutes les éléments de U et de V pendant 30 MOIS.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    liste1=[1000+80*x for x in range (30)]
    print(liste1)
    liste2=[1000*1.05**x for x in range(30)]
    print(liste2)

  3. #3
    Expert éminent sénior
    Salut,

    Citation Envoyé par FLORE2222 Voir le message
    J'ai vraiment besoin de votre aide et je vous remercie en avance !
    Vous avez essayé votre programme?
    Est ce qu'il retourne le résultat attendu?
    Jusque là, l'interpréteur Python peut déjà vous répondre...

    Mais arrivé ici: quelle est la question?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre à l'essai
    j'ai deux listes

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    liste1=[1000+80*x for x in range (30)]
    print(liste1)
    liste2=[1000*1.05**x for x in range(30)]
    print(liste2)



    Sur Python j'obtiens ce résultat :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    [1000, 1080, 1160, 1240, 1320, 1400, 1480, 1560, 1640, 1720, 1800, 1880, 1960, 2040, 2120, 2200, 2280, 2360, 2440, 2520, 2600, 2680, 2760, 2840, 2920, 3000, 3080, 3160, 3240, 3320]
     
    [1000.0, 1050.0, 1102.5, 1157.6250000000002, 1215.5062500000001, 1276.2815625000003, 1340.0956406250004, 1407.1004226562504, 1477.455443789063, 1551.3282159785163, 1628.894626777442, 1710.3393581163143, 1795.8563260221301, 1885.6491423232367, 1979.9315994393987, 2078.9281794113685, 2182.874588381937, 2292.018317801034, 2406.619233691086, 2526.9501953756403, 2653.2977051444223, 2785.9625904016434, 2925.260719921726, 3071.523755917812, 3225.099943713703, 3386.3549408993886, 3555.6726879443577, 3733.456322341576, 3920.129138458655, 4116.135595381588]




    Le but est de savoir à quel mois le salaire de la liste2 va dépasser le salaire de la liste1

  5. #5
    Expert éminent sénior
    Salut,

    Dans votre premier programme, vous faisiez des itérations pour calculer Um et Vm en fonction de Um-1 et Vm-1 avec la condition tant que U >= V et çà sort le M (nombre de mois) qui va bien.

    Je ne vois pas trop l'intérêt de construire des listes (à priori on ne sait pas combien d'éléments il faudra y stocker).

    Pour le reste, vous avez suffisamment de Python pour coder çà pour autant que vous sachiez ce que vous voulez faire.

    note: U est une suite arithmétique alors que V est suite géométrique.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre à l'essai
    oui ....V est une suite arithmétique.

    L'intérêt de créer des listes est peut être de comparer les salaires cumulés alors. Il faut peut être ajouter sum(U) et sum(V) ??

    Le premier programme que j'ai mis en début de post ne fonctionne pas quand je le lance. Voici ce que j'obtiens :


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    >>> 
    >>> def contrat (): 
    ...   V=[1000] 
    ...   U=[1000] 
    ...   u=1000 
    ...   v=1000 
    ...   M=1 
    ...   while u>=v: 
    ...     u=u+80 
    ...     v=v*1.05 
    ...     U.append(u) 
    ...     V.append(v) 
    ...   return M 
    ...   
    >>> def contrat()
      File "<stdin>", line 1
        def contrat()
                    ^
    SyntaxError: invalid syntax
    >>>

  7. #7
    Expert éminent sénior
    Bonjour
    Citation Envoyé par FLORE2222 Voir le message
    Citation Envoyé par wiztricks Voir le message
    ...alors que V est suite géométrique.
    oui ....V est une suite arithmétique.
    Ouais, super. Déjà tu ne suis même pas ce qu'on te dit quoi...

    Citation Envoyé par FLORE2222 Voir le message
    L'intérêt de créer des listes est peut être de comparer les salaires cumulés alors. Il faut peut être ajouter sum(U) et sum(V) ??
    Ben peut-être. C'est toi qui sait ce qui est demandé. Mais bon, nulle part dans ta description tu as parlé de comparer les salaires cumulés (et quoi qu'il en soit, stocker toutes les valeurs par avance n'est pas nécessaire pour calculer le cumul de ces valeurs, même si tu brûles d'envie d'utiliser sum()).

    Citation Envoyé par FLORE2222 Voir le message
    Code python :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> def contrat ():
    ... V=[1000]
    ... U=[1000]
    ... u=1000
    ... v=1000
    ... M=1
    ... while u>=v:
    ... u=u+80
    ... v=v*1.05
    ... U.append(u)
    ... V.append(v)
    ... return M
    Un return 1 final revient au même ainsi on supprime cette variable "M" inutile (quand à l'utilité de faire tous ces calculs pour retourner 1, ça...)

    Citation Envoyé par FLORE2222 Voir le message
    Le premier programme que j'ai mis en début de post ne fonctionne pas quand je le lance. Voici ce que j'obtiens :
    Code python :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> def contrat()
      File "<stdin>", line 1
        def contrat()
                    ^
    SyntaxError: invalid syntax
    >>>
    Ben ouais. Il faut terminer l'instruction par un double point. Quand tu auras ouvert un tuto Python et appris sa syntaxe, tu pourras revenir en deuxième semaine.
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  8. #8
    Expert éminent sénior
    Salut,

    Citation Envoyé par FLORE2222 Voir le message
    L'intérêt de créer des listes est peut être de comparer les salaires cumulés alors. Il faut peut être ajouter sum(U) et sum(V) ??
    Programmer n'est pas une activité "artistique" où on va ajouter un peu de rouge ou de bleu pour faire plus joli. On part du problème à résoudre, on décrit l'algorithme qui permettra de le faire et on le traduit (code) en programme...
    A la fin, on doit être capable d'expliquer pourquoi on a utilisé telle variable ou telle structure de données.

    Citation Envoyé par FLORE2222 Voir le message
    Le premier programme que j'ai mis en début de post ne fonctionne pas quand je le lance.
    Si on vous donne un exercice, c'est pour vous permettre de pratiquer les notions qui ont été décrites dans un cours ou un tuto. Quelque part vous devez avoir un chapitre sur les fonctions, et si vous avez des soucis pour appeler une fonction que vous avez écrite, lui passer un paramètre, récupérer sa valeur de retour...
    Il faut commencer par revoir/relire le chapitre en question!

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre à l'essai
    J'ai réussi à créer un script qui renvoie le mois où le salaire v dépasse le salaire u

    Le voici

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    n=0
    u=1000
    v=1000
    while u>=v:
    n=n+1
    u=u+80
    v=v*1.05


    Dans la console, je tape la valeur n qui renvoie19.
    Ce qui signifie qu'au bout du 19 ème mois le salaire mensuel v va dépasser le salaire mensuel u


    MA QUESTION : l'exercice demande d'utiliser des listes : ""créer un programme en langage PYTHON qui détermine le 1er mois à partir duquel le salaire du contrat V dépasse le salaire du contrat u . On générera deux listes , la 1ere contenant les salaires du contrat U, la 2ème contenant les salaires du contrat V

    Comment peut ont programmer ce script avec des listes ?

    J'ai essayé d'être la plus claire possible. Merci pour votre aide !

  10. #10
    Expert éminent sénior
    Citation Envoyé par FLORE2222 Voir le message
    Ce qui signifie qu'au bout du 19 ème mois le salaire mensuel v va dépasser le salaire mensuel u
    Il faudra faire attention au sens de "au bout du" car c'est très exactement au 20ème mois que v dépasse u donc effectivement "après" (on va dire que "au bout du" en est un synonyme) le 19ème. C'est le genre de confusion provoqué quand un compteur commence à 0...

    Citation Envoyé par FLORE2222 Voir le message
    Comment peut ont programmer ce script avec des listes ?
    Pfff... faudrait voir à ouvrir un tuto au chapitre qui t'explique comment on manipule des listes...
    Code python :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    n=0
    u=[1000,]
    v=[1000,]
    while u[-1] >= v[-1]:
    	n=n+1
    	u.append(u[-1]+80)
    	v.append(v[-1]*1.05)
    # while

    Voilà. Compliqué ???
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  11. #11
    Expert éminent sénior
    Salut,

    Citation Envoyé par FLORE2222 Voir le message
    Comment peut ont programmer ce script avec des listes ?

    J'ai essayé d'être la plus claire possible.
    Le premier code que vous avez posté construisait déjà ces listes.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  12. #12
    Membre à l'essai
    Citation Envoyé par Sve@r Voir le message
    Il faudra faire attention au sens de "au bout du" car c'est très exactement au 20ème mois que v dépasse u donc effectivement "après" (on va dire que "au bout du" en est un synonyme) le 19ème. C'est le genre de confusion provoqué quand un compteur commence à 0...
    Merci.

    Citation Envoyé par wiztricks Voir le message
    Le premier code que vous avez posté construisait déjà ces listes.

    alors pourquoi il n'affiche rien quand je l'exécute ???

  13. #13
    Expert éminent sénior
    Citation Envoyé par FLORE2222 Voir le message
    alors pourquoi il n'affiche rien quand je l'éxecute ???
    Ben sais pas trop. A tout hasard, peut-être parce qu'il ne contient aucune instruction d'affichage de quoi que ce soit...
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  14. #14
    Expert éminent sénior
    Citation Envoyé par FLORE2222 Voir le message
    alors pourquoi il n'affiche rien quand je l'éxecute ???
    Dans le dernier code que vous avez posté, çà affiche la valeur de n si vous tapez n à la console.

    Si vous exécutez la fonction que vous avez posté au début, çà affichera (à la console) ce que retourne la fonction (et çà devrait être la même valeur). Et elle pourrait aussi retourner les listes qu'elle a construit.
    Bien sûr, il faut savoir appeler une fonction... sinon pourquoi fabriquer une fonction?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  15. #15
    Membre à l'essai
    Citation Envoyé par wiztricks Voir le message
    Dans le dernier code que vous avez posté, çà affiche la valeur de n si vous tapez n à la console.

    Si vous exécutez la fonction que vous avez posté au début, çà affichera (à la console) ce que retourne la fonction (et çà devrait être la même valeur). Et elle pourrait aussi retourner les listes qu'elle a construit.
    Bien sûr, il faut savoir appeler une fonction... sinon pourquoi fabriquer une fonction?

    - W
    En fait je débute en Python .... J'ai réussi à afficher la valeur 20 avec le tout premier code en appelant correctement la fonction. J'ai juste tapé contrat() dans la console. Merci pour votre aide.

  16. #16
    Expert éminent sénior
    Salut,

    Citation Envoyé par FLORE2222 Voir le message
    En fait je débute en Python ....
    Çà se voit!

    C'est dur de débuter parce qu'il y a des tas de choses à apprendre pour se construire quelques repères sur comment çà fonctionne et un minimum de vocabulaire pour raconter ce qu'on veut, ce que çà fait ou pas...

    Pour faire ces premiers pas, vous devez passer du temps dans les tutos. Si vous n'en avez pas encore choisi un jetez un œil sur le Swinnen. Et passer du temps, c'est non seulement faire les exercices pour toucher du doigt les notions présentées dans les différents chapitres mais aussi revoir ceux qui parlent de.... lorsqu'on a besoin d'utiliser ... et qu'on a plus ou moins oublié.

    Pour aller dans un forum de discussion, il faut avoir un minimum de bases pour raconter ce qu'on veut montrer ce qu'on a fait,.... Pour vous aider, il faut comprendre, pour comprendre échanger...
    Ce qui suppose un minimum de vocabulaire commun.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

###raw>template_hook.ano_emploi###