Petit programme en Python
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Petit programme en Python



  1. #1
    Yves2m2i

    Question Petit programme en Python


    ------

    Bonjour,

    Si quelqu'un peut me suggérer un programme en Python pour résoudre ce problème, ça m'aiderait bien car je suis bloqué. Je ne vois pas comment déplacer le calcul de la somme demandée de la colonne 1 à la colonne 2 et de la colonne 2 à la colonne 3 puis de la ligne 1 à la ligne 2 (voir image jointe).

    Merci pour votre aide.


    Nom : 33c7ee3b-c8ed-407c-a0a2-1e3a987e904a.jpg
Affichages : 140
Taille : 111,1 Ko

    -----

  2. #2
    umfred

    Re : Petit programme en Python

    méthode "basique" tu parcours ton tableau dans les 2 sens, indice (i,j) 0 à 2 en partant de l'indice x=0, 1, 2 horizontalement et y=0,1 verticalement (de manière générale, tant que i+2<len(tableau[0]) et j+2<len(tableau)

  3. #3
    Yves2m2i

    Re : Petit programme en Python

    Merci pour cette réponse. J'apprends l'algorithmie et le langage Python en autodidacte et ce qui paraît simple est souvent pour moi compliqué.

  4. #4
    umfred

    Re : Petit programme en Python

    l'algorithmie c'est de décrire les actions pour résoudre un problème à partir de tâches simples, indépendamment du langage (en principe). En général, on se pose la question: comment je peux faire ça à la main, une opération basique à la fois. (après avoir fait un 1er cheminement, on peut essayer repérer une logique de boucle)
    Ici on peut dire en entrée j'ai une table 4lx5c et en sortie une table 2lx3c dont les valeurs sont la somme d'une matrice 3lx3c qui se déplace sur mon tableau
    (ici je raisonne avec des indices partant de 1, ce qui est le plus naturel humainement, mais dans beaucoup de langage, les indices commencent à 0)
    je mémorise dans une variable resultat l'élément l1=1,c1=1, (donc resultat =1);
    je lui ajoute l'élément l1=1, c1=2 et je mémorise (donc resultat = 1 +1 =2)
    je lui ajoute l'élément l1=1, c1=3 et je mémorise (donc resultat=2+1=3)
    je lui ajoute l'élément l1=2, c1=1 et je mémorise (donc résultat=3+1=4)
    ...
    je lui ajoute l'élément l1=3, c1=3 et je mémorise (donc resultat=5+1=6)
    je met le résultat dans mon tableau de sortie en l2=1, c2=1
    je mémorise l'élément l1=1, c1=2 (donc resultat=1)
    je lui ajoute l'élément l1=1, c1=3 et je mémorise (donc resultat = 1 +1 =2)
    ...

    Quand on commence à voir un schéma répétitif, on essaie de trouver ce qui varie, ici on voit que l'on fait varier l1 et c1 du 1er tableau en partant d'une valeur jusqu'à cette même valeur+2, chacun leur tour ==> 2 boucles imbriquées pour faire l1 et c2, que l'on fait une somme des valeurs (donc il faut que je l'initialise, le meilleur moment étant au début de ma boucle, ou encore mieux avant ma boucle en lui mettant 0 (car 0+tableau(l1,c1) = tableau(l1,c1))

    Après, on peut remarquer que si je prends comme valeur initiale de l1 et c1, les mêmes valeurs d'indices que la case (l2,c2) que je veux remplir dans mon tableau de sortie, ça fonctionne et on voit que l2 va de 1 à 2 et c2 de 1 à 3; donc là encore 2 boucles; en résumant, l'algo pourrait être:
    Code:
    pour l2=1 à 2:
        pour c2=1 à 3:
            resultat=0
            pour l1=l2 à l2+2:
                pour c1=c2 à c2+2:
                    resultat=resultat+tableau(l1,c1)
            sortie(l2,c2)=resultat
    Après, on va chercher à généraliser selon la taille des tableaux pour avoir le moins de "valeurs magiques" possibles puis rajouter des tests de validités
    par exemple
    Code:
    pour l2=1 à 2:
        pour c2=1 à 3:
    3 et 2 correspondent à la dimension du tableau de sortie; (nb_ligne_sortie=2, nb_colonne_sortie=3);
    Code:
            pour l1=l2 à l2+2:
                pour c1=c2 à c2+2:
    le "+2" vient du fait que l'on a une matrice 3x3 pour faire l'opération (nb_ligne_select=3, nb_colonne_select=3)
    Dans le cas général, je dois donc vérifier que nb_ligne_sortie + nb_ligne_select < nb_ligne_entree (idem sur les colonnes) (En fait, la logique voudrait plutôt que l'on définisse la taille du tableau de sortie donc nb_ligne_ sortie=nb_ligne_entree - nb_ligne_select +1 (ainsi on remplit la condition évoquée plus haut)

  5. A voir en vidéo sur Futura
  6. #5
    Yves2m2i

    Re : Petit programme en Python

    Bonsoir Umfred,

    Merci beaucoup. Je crois qu'avec ces explications très claires, je vais finir par comprendre.
    Bonne soirée.

Discussions similaires

  1. [Python] Problème de lag de programme et essai de Timer python
    Par Loupsio dans le forum Programmation et langages, Algorithmique
    Réponses: 20
    Dernier message: 26/01/2018, 15h14
  2. Programme Python
    Par invite03a2d249 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 29/01/2017, 07h50
  3. [Python] subprocess, lancer un autre programme avec python
    Par Loupsio dans le forum Programmation et langages, Algorithmique
    Réponses: 10
    Dernier message: 30/11/2016, 18h56
  4. Python aide pour un petit programme
    Par invite9629fcad dans le forum Programmation et langages, Algorithmique
    Réponses: 10
    Dernier message: 09/01/2016, 16h34
  5. petit problème dans mon programme python
    Par invite84fb3bc0 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 05/01/2013, 14h13