IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Probleme basique en python


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 20
    Par défaut Probleme basique en python
    Bonjour a tous, je suis nouveau dans les laquage de programmation et je me trouve devant un problème que j'ai du mal a résoudre tous seul et qui vas être difficile a expliquer

    J'ai 6 fonction
    Fonction1()
    Fonction2()
    Fonction3()
    Fonction4()
    Fonction5()
    Fonction6()

    j'ai 2 condition
    voltmètre>53
    voltmètre<49

    j'aimerais que quand mon voltmètre est plus grand que 53 il me fasse tourner la fonction suivante
    exemple :
    if voltmètre>53:
    Fonction()+1

    et l'inverse quand mon voltmètre est plus petit que 49 il me fasse tourner la dernier fonction
    exemple :
    if voltmètre>53:
    Fonction()+0


    je ne sait pas si c'est claire je m'embrouille tout seul


    voila un exemple de code

    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
    21
    22
    23
     
    if volt>53:
        a1()
        if volt>53:
            a2()
            if volt>53:
                a3()
                if volt>53:
                    a4()
                    if volt>53:
                        a5()
                        if volt>53:
                            a6()
                        if volt<49:
                            a5()
                    if volt<49:
                        a4()
                if volt<49:
                    a3()
            if volt<49:
                a2() 
        if volt<49:
            a1()

    de cette manière mon code est infinie

    merci d'avance pour votre aide

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    nommer des variables A1, A2, A3,.... devrait vous faire penser "collection".
    Les collections de base du langage sont listes, tuples, dictionnaires, set,...

    Les fonctions sont des objets comme les autres, on peut donc en faire une liste L.

    Maintenant on peut avoir une variable mémorisant l'indice courant IC de cette liste... et une condition qui incrémente ou décrémente cet IC pour récupérer l'objet correspondant de L (après avoir traité le cas aux limites).

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

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ce n'est pas très clair, est-ce que tes 6 fonctions sont censées se lancer si on a volt > 53 ? Ou alors est-ce qu'au premier relevé c'est la fonction_1 au second relevé si > 53 fonction_N+1 et si < 49 fonction_N-1 ?

    Une idée partielle :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    def f1():
        print('f1')
     
     
    def f2():
        print('f2')
     
     
    def f3():
        print('f3')
     
     
    LISTE = [f1, f2, f3]
    index = -1
    if volt > 53:
        index = min(index+1, len(LISTE)-1)
        LISTE[index]()
     
     
    f1
    if volt > 53:
        index = min(index+1, len(LISTE)-1)
        LISTE[index]()
     
     
    f2
    if volt > 53:
        index = min(index+1, len(LISTE)-1)
        LISTE[index]()
     
     
    f3
    if volt > 53:
        index = min(index+1, len(LISTE)-1)
        LISTE[index]()
     
     
    f3
    if volt > 53:
        index = min(index+1, len(LISTE)-1)
        LISTE[index]()
     
     
    f3
    PS : On pouvait faire ça avec les anciennes versions de Python ? LISTE[index]()
    Dernière modification par Invité ; 01/10/2022 à 16h39.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 20
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    nommer des variables A1, A2, A3,.... devrait vous faire penser "collection".
    Les collections de base du langage sont listes, tuples, dictionnaires, set,...

    Les fonctions sont des objets comme les autres, on peut donc en faire une liste L.

    Maintenant on peut avoir une variable mémorisant l'indice courant IC de cette liste... et une condition qui incrémente ou décrémente cet IC pour récupérer l'objet correspondant de L (après avoir traité le cas aux limites).

    - W
    tout d'abor merci pour ta réponse

    ensuite j'ai essayer avec des liste ou tableau mais je ne connait pas bien les option qu'il est possible de faire dessus

    peut tu me donner un exemple STP

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 20
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Bonjour,

    Ce n'est pas très clair, est-ce que tes 6 fonctions sont censées se lancer si on a volt > 53 ? Ou alors est-ce qu'au premier relevé c'est la fonction_1 au second relevé si > 53 fonction_N+1 et si < 49 fonction_N-1 ?
    [/CODE]
    bonjour LeNarvalo

    c'est sa juste si <49 fonction_N et si encore <49 fonction_N-1
    je ne sait pas si c'est claire

    peut etre pour eviter se probleme ajouter d'autre fonction

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ok ! Regarde mon code et adapte le à ton besoin ;-).

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par Jojofurax Voir le message
    j'ai essayer avec des liste ou tableau mais je ne connait pas bien les option qu'il est possible de faire dessus
    Vous êtes supposé avoir ouvert un tuto. et fait des exercices sur les listes avant de demander de l'aide ici (c'est ce que disent les règles à lire avant de poster).
    Votre truc se ramène à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> L = list('ABCD')
    >>> ic += 1
    >>> L[ic]
    'B'
    >>> ic += 1
    >>> L[ic]
    'C'
    >>> ic -= 1
    >>> L[ic]
    'B'
    >>>
    ou on remplace "ABCD" par des fonctions.

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

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 20
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Ok ! Regarde mon code et adapte le à ton besoin ;-).
    je pense que tu a la bonne voie mais malheureusement je n'ai aucune compétence dans les index de liste

    je vais essayer de chercher

    voici une base qui me parait bonne

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    from ast import Index
     
     
    def a1():
        print("machine1carte2")
     
    def b1():
        print("machine1carte2")
     
    def a2():
        print("machine1carte3")
     
    def b2():
        print("machine1carte3")
     
    def a3():
        print("machine2carte2")
     
    def b3():
        print("machine2carte2")
     
    def a4():
        print("machine2carte3")
     
    def b4():
        print("machine2carte3")
     
    def a5():
        print("machine3carte2")
     
    def b5():
        print("machine3carte2")
     
    def a6():
        print("machine3carte3")
     
    def b6():
        print("machine3carte3")
     
    LISTEA = [a1(), a2(), a3(), a4(), a5(), a6()]
    LISTEB = [b1(), b2(), b3(), b4(), b5(), b6()]
     
    INDEX1 = -1
    INDEX2 = +1
     
    volt = 55

  9. #9
    Invité
    Invité(e)
    Par défaut
    Comme dit Wiz, il faut que tu maitrises un minimum les bases ! ;-)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LISTEA = [a1(), a2(), a3(), a4(), a5(), a6()]
    Ca c'est pas bon !
    Car tu appelles chaque fonction dans ta liste !

    Regarde cet exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> def a1():
    ...     print('La fonction est appelée')
    ... 
    ...     
    >>> LISTE = [a1()]
    La fonction est appelée
    >>> LISTE[0]()
    Traceback (most recent call last):
      File "<pyshell#4>", line 1, in <module>
        LISTE[0]()
    TypeError: 'NoneType' object is not callable
    >>> LISTE = [a1]
    >>> LISTE[0]()
    La fonction est appelée
    Les index c'est vraiment très simple à comprendre, le premier objet dans la liste a l'index 0, le second a l'index 1, le troisième a l'index 2, etc. tu peux également prendre la liste à l'envers le dernier objet à donc l'index -1, l'avant-dernier -2, etc. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LISTE = [0, 1, 2, 3, 4, 5]
    LISTE = [-6, -5, -4, -3, -2, -1]

  10. #10
    Invité
    Invité(e)
    Par défaut
    Et Wiz, tu sais si, avec les anciennes versions de python, on pouvait appeler une fonction comme ça : LISTE = [ma_fonction]; LISTE[0]() ?
    J'ai pas souvenir que l'on pouvait faire ça autrefois.




    Sinon Jojofurax, tu as une méthode dégueulasse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    eval('mafonction1()')
    for i in range(1,7):
        print('Ma fonction', i,'()')
        eval('ma_fonction'+str(i)+'()')
    Mais c'est à proscrire pour des raisons de cybersécurité.

  11. #11
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Jojofurax Voir le message
    voici une base qui me parait bonne

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    def a1():
        print("machine1carte2")
     
    def b1():
        print("machine1carte2")
     
    def a2():
        print("machine1carte3")
     
    def b2():
        print("machine1carte3")
     
    def a3():
        print("machine2carte2")
     
    def b3():
        print("machine2carte2")
     
    def a4():
        print("machine2carte3")
     
    def b4():
        print("machine2carte3")
     
    def a5():
        print("machine3carte2")
     
    def b5():
        print("machine3carte2")
     
    def a6():
        print("machine3carte3")
     
    def b6():
        print("machine3carte3")
    J'ai bien conscience que tu nous montres là un simple exemple (sinon ce serait vraiment à chier avec tes fonctions, telles a2 et b2, faisant exactement la même chose) mais tu n'as vraiment pas possibilité de factoriser? Style
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def fonction(m, c): print("machine{0}carte{1}".format(m, c))
     
    fonction(3, 2)
    fonction(1, 3)
    ???

    Citation Envoyé par LeNarvalo Voir le message
    Et Wiz, tu sais si, avec les anciennes versions de python, on pouvait appeler une fonction comme ça : LISTE = [ma_fonction]; LISTE[0]() ?
    J'ai pas souvenir que l'on pouvait faire ça autrefois.
    Sisi, on pouvait le faire autrefois. Enfin tout dépend de ta définition de "autrefois". Il est clair que sous Louis XIV, on ne pouvait pas le faire, mais sous Python2 on le pouvait. Dans cette version d'autrefois, les fonctions étaient aussi des objets qu'on pouvait aussi regrouper dans une liste.

    Citation Envoyé par LeNarvalo Voir le message
    Sinon Jojofurax, tu as une méthode dégueulasse
    Ouais ben dans ce cas tu évites. Ca sert à rien de lui montrer un truc qui fait ce qu'il veut en lui disant "surtout ne l'utilise pas, cherche une autre solution" parce que dans 99% des cas, l'autre il se dit "j'en ai rien à cirer que ce soit dégueulasse tant que ça marche" et voilà comment tu l'envoies dans le terminus des devs crados. N'oublie pas que "autrefois", pour introduire la pomme de terre en France, Parmentier l'a mise dans une cabane avec des gardes devant et un panneau "interdit d'y toucher". 3 semaines plus tard tout le monde en avait dans son assiette...
    Mon Tutoriel sur la programmation «Python»
    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
    Et on poste ses codes entre balises [code] et [/code]

  12. #12
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    J'ai pas souvenir que l'on pouvait faire ça autrefois.
    Python a toujours été un langage de programmation objet.... et les fonctions de Python sont des first class objects (au moins depuis la 2.4 avant je ne suis pas allé voir).

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

  13. #13
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 20
    Par défaut
    alors c'est bon j'ai a peut prêt compris comment fonctionne INDEX

    merci a vous de me faire progresser

    j'ait fait se code qui marche bien

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    def a0():
        print('Machine1')
    def a1():
        print('Machine2')
    def a2():
        print('Machine3')
    def a3():
        print('Machine4')
     
    LISTE = [a0, a1, a2, a3]
     
    index = -1
     
    volt = 55
    volt1 = 40
     
    if volt > 53:
        index = min(index+1, len(LISTE)-1)
        print("allumer:")
        LISTE[index]()
     
    if volt > 53:
        index = min(index+1, len(LISTE)-1)
        print("allumer:")
        LISTE[index]()
     
    if volt1 < 49 and index>0:
        index = min(index-1, len(LISTE)-1)
        print("eteindre:")
        LISTE[index]()
     
    if volt1 < 49 and index>0:
        index = min(index-1, len(LISTE)-1)
        print("eteindre:")
        LISTE[index]()
    mon problème maintenant c'est que
    si >49volt
    je doit éteindre la dernier machine et si encore <49volt je doit éteindre la machine d'avent

    donc la premier fois je doit faire index et les suivante index-1

    enfaite ma fonction pour allumer ou pour etaindre c'est le meme code

    si vous avez une idee

    ps: merci beaucoup pour index sa ma bien aider

  14. #14
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    Bonjour

    Opps, désolé, ma réponse n'a plus de sens au vu du dernier message

    MAIS toujours rien compris au problème concret !

    Existe 4 machines ?
    en fonction de 2 valeurs et teindre (ou allumer) une machine ?
    Comment savoir quelle est la machine d'avant ?

    le principe n'est pas ????
    En fonction d'une mesure,
    - 53: éteindre la machine en cours et allumer la suivante ?
    - 49: si mesure basse, alors faire l'inverse : éteindre celle en cours et allumer la précédente ?

  15. #15
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 20
    Par défaut
    Citation Envoyé par papajoker Voir le message
    Bonjour


    Lorsque l'on regarde la question, ceci ne ressemble en rien à un problème basique



    si volt>53 alors faire a() puis b() , et après, si <49 !!!! c'est une blague (puisque la première condition est si >53)
    Donc l'exemple ne représente strictement rien, j'ai plus l'impression que tu te crées un problème sorti de ton imagination, mais sans aucune logique (donc on ne peut répondre à une demande sans logique)
    Je suppose qu'écrire que 2 valeurs 49 et 53 est de la flemme, sinon bonjour la logique
    "mon code est infinie" : facile de faire du code "infini" puisque ici, il n'est jamais exécuté (si la_terre est carrée et la_terre est plate alors ... )

    Comme le dit Sve@r, tu n'as pas cherché à factoriser (et je me demande même si tu sais que l'on peut passer des paramètres à une fonction... Non? alors cette question n'a pas de sens)


    et vu qu'il n'y a même pas un "else" difficile de voir un "et l'inverse quand"


    -----------
    Pour finir sur une note positive, je vais te donner un petit exemple de code (désolé code sans doute hors de portée d'un grand débutant)
    Une (des) procédures déclenchées en fonction d'un range, sans doute une usine à gaz bien inutile pour ton réel besoin
    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
    def a(x): print("a", x)
    def b(x): print("b", x)
    def c(x): print("c", x)
     
    actions = [  # on utilise un dico ou des tuples
        {'mini': 0, 'maxi': 15, 'run': a},
        {'mini': 16, 'maxi': 25, 'run': None},
        {'mini': 36, 'maxi': 65, 'run': b},
        {'mini': 40, 'maxi': 50, 'run': c},
    ]
     
    mesure = 45
    print("action pour", mesure)
    for action in actions:
        if mesure >= action['mini'] and mesure <= action['maxi']:
            print(action['mini'], action['maxi'], action['run'])
            action['run'](action)
            # pas de break : on peut avoir plusieurs actions pour une même mesure
    tu te la pette beaucoup avec t'es connaissance mais il faut avouer TU PEUT
    j'aimerait être aussi caller que toi mais pour sa il vas me falloir du temps

    effectivement je ne comprend pas grand chose dans ton code car comme tu le dit je suis débutant

    une seul chose est fausse
    mon code a une réelle utilisation

    je doit faire marcher des machine en fonction de la puissance des panneau solaire

    voici le code que j'ai réussi a faire avec mes petit doigt de débutant et grâce a se forum d'ailleurs merci a tous

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    import time
     
    def a0():
        print('Machine1')
    def a1():
        print('Machine2')
    def a2():
        print('Machine3')
    def a3():
        print('Machine4')
     
    LISTE = [a0, a1, a2, a3]
     
    index = -1
     
     
     
    while True:
     
        volt = 0
        volt = int(input("Volt :"))
     
        if volt > 53 and index<3:
            index = min(index+1, len(LISTE)-1)
            print("allumer:")
            LISTE[index]()
     
        if volt < 49 and index>=0:
            index = min(index, len(LISTE)-1)
            print("eteindre:")
            LISTE[index]()
     
        print("-----------------")
        time.sleep(4)
    mon problème maintenant c'est que je ne sait pas comment passer de "index" a "index-1"
    la premier fois que je passe sous les 49volt je doit être sur index pour éteindre la dernier machine allumer
    mais la fois suivent je doit être sur index-1

    avec ton tallent je suis sur que tu sait déjà comment résoudre mon problème

  16. #16
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    N'oublie pas que "autrefois", pour introduire la pomme de terre en France, Parmentier l'a mise dans une cabane avec des gardes devant et un panneau "interdit d'y toucher". 3 semaines plus tard tout le monde en avait dans son assiette...
    Du coup je vais continuer si eval() c'est aussi bon que des patates !
    J'ai bien compris la morale ?




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if volt < 49:
            index = max(index-1, 0)
            print("eteindre:")
            LISTE[index]()
    Pas la peine d'utiliser la condition index >= 0, max() permet de sélectionner la plus grande valeur donc si tu as max(-1, 0) il va te renvoyer 0, min() fait l'inverse...

  17. #17
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Jojofurax Voir le message
    je doit faire marcher des machine en fonction de la puissance des panneau solaire
    Et si tu commençais par nous expliquer ça plus en détail??? Parce que pour l'instant je suis quasiment certain que tu nous as fait un problème XY...

    Citation Envoyé par Jojofurax Voir le message
    mon problème maintenant c'est que je ne sait pas comment passer de "index" a "index-1"
    index-=1...

    Citation Envoyé par Jojofurax Voir le message
    la premier fois que je passe sous les 49volt je doit être sur index pour éteindre la dernier machine allumer
    mais la fois suivent je doit être sur index-1
    Tu mémorises la dernière machine allumée. Si tu dois en allumer une autre tu incrémentes cette valeur, et si tu dois en éteindre une tu la décrémentes (enfin si j'ai bien compris l'idée).

    Code python : 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    def a0(): return "machine 1"
    def a1(): return "machine 2"
    def a2(): return "machine 3"
    def a3(): return "machine 4"
     
    pool=(a0, a1, a2, a3)
    state=0
     
    while True:
    	volt=int(input("Volt?"))
    	if volt > 53:
    		if state >= len(pool):
    			print("(%d) - Impossible, plus de machine à allumer" % state)
    			continue
    		# if
    		state+=1
    		print("(%d) - Allumage %s" % (state, pool[state-1]()))
    	elif volt < 49:
    		if state <= 0:
    			print("(%d) - Impossible, plus de machine à éteindre" % state)
    			continue
    		# if
    		print("(%d) - Extinction %s" % (state, pool[state-1]()))
    		state-=1
    	else:
    		print("(%d) - Rien à faire..." % state)
    	# if
    # while

    Et putain fais un effort d'orthographe parce que là c'est illisible. J'en ai mal à la tête à devoir relire dix fois un texte où le sens des mots va à l'encontre du sens général de la phrase. "ça" ce n'est pas la même chose que "sa" et "à essayer" et "a essayé" n'ont pas la même signification.
    Mon Tutoriel sur la programmation «Python»
    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
    Et on poste ses codes entre balises [code] et [/code]

  18. #18
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    Citation Envoyé par Jojofurax Voir le message
    je doit faire marcher des machine en fonction de la puissance des panneau solaire


    la premier fois que je passe sous les 49volt je doit être sur index pour éteindre la dernier machine allumer
    mais la fois suivent je doit être sur index-1

    avec ton tallent je suis sur que tu sait déjà comment résoudre mon problème
    Mais, je n'ai aucun talent pour te comprendre
    J'avais ré-éditer mon message en fonction de ton dernier (car j'étais, oui, à côté de la plaque: ce n'est pas une question algorithmique imaginaire d'un grand débutant)

    Ton code actuel n'est toujours pas clair ...
    Tu as 4 machines ? donc ok pour un tableau de machines
    53 : tu allumes une nouvelle machine (si pas déjà toutes en marche)
    <49 : tu éteinds une machine (si une est en route)

    La function allumer/éteindre est la même donc on passe uniquement l'id de la machine ?
    Nous sommes donc très loin du postulat de départ avec ces 6 fonctions (sans paramètre)

    A voir, si l'ordre des machines compte ??? mais, peut être écrit en dur

    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
    machines = ("N1", "SE2" ," UE3", "DO4")  # en fonction de l'api des machines
     
    def liberer():
      for machine in machines.reverse():
        if est_allumée(machine):  # fonction existe dans l'api des machines ?
            print("pas assez de puissance, on eteind la machine:", machine)
            eteindre_machine(machine)    # appel à l'api de la machine
            return   # ici on éteind la premiere dans la liste et pas toutes
     
    def allumer(): # même logique
     
    while True:
     mesure = get_voltage()
     if mesure >53 : allumer()
     if mesure <49 : liberer()

  19. #19
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 20
    Par défaut
    aie aie aie

    Désoler je ne suis pas bon pour expliquer n'y pour écrire mais je vais faire un effort


    voici le dernier code

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    import time
     
    def a1():
        print('Machine1')
    def a2():
        print('Machine2')
    def a3():
        print('Machine3')
    def a4():
        print('Machine4')
    def a5():
        print('Machine5')
    def a6():
        print('Machine6')
     
    LISTE = [a1, a2, a3, a4, a5, a6]
     
    index = -1
     
     
     
    while True:
     
        volt = 0
        volt = int(input("Volt :"))
     
        if volt > 53 and index<5:
            index = min(index+1, len(LISTE)-1)
            print("allumer:")
            LISTE[index]()
     
        if volt < 49 and index>0:
            index = min(index-1, len(LISTE)-1)
            print("eteindre:")
            LISTE[index]()
     
        print("-----------------")
        time.sleep(1)
    voici la dernier MAJ

    j'ai 6 machine exactement

    Mon but est simple

    j'aimerai que quand le voltmètre m'indique que j'ai plus de 53 volts dans mes batterie, ma premier machine s'allume ect

    si mes batterie retombe en dessous de 49 volts il éteint la dernier machine qui c'est allumer

    et si mes batterie retombe encore en dessous de 49 volts il éteint une autre machine si bien sur il y en a une qui est allumer

    en gros
    si >53v alors allumer machine 1
    si <49v alors éteindre machine 1
    si <49v Ne rien faire car toute les machine sont éteinte
    si >53v alors allumer machine 1
    si >53v alors allumer machine 2
    si >53v alors allumer machine 3
    si <49v alors éteindre machine 3
    si <49v alors éteindre machine 2
    si >53v alors allumer machine 2
    si >53v alors allumer machine 3
    si >53v alors allumer machine 4
    si >53v alors allumer machine 5
    si >53v alors allumer machine 6
    si >53v alors ne rien faire car toute les machine sont déjà allumer

    ne faite pas attention aux fonction car je n'est pas mi le code dedans pour ne pas se fatiguer les yeux

  20. #20
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2022
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2022
    Messages : 20
    Par défaut
    Citation Envoyé par papajoker Voir le message

    A voir, si l'ordre des machines compte ???
    malheureusement oui sa compte car j'ait 3 alimentation pour 3 machine différente et dans ces 3 machine il y a 9 carte

    enfin bon c'est assez compliquer comme sa j'ai juste besoin d'un chemin logique

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Affichage 3D probleme basique
    Par viken dans le forum MATLAB
    Réponses: 2
    Dernier message: 25/05/2007, 14h13
  2. constructeur - probleme basique
    Par Flamby38 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 09/01/2007, 23h11
  3. probleme basique
    Par Tr@nkill dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/04/2006, 15h44
  4. Problème basique sous Anjuta (compilation)
    Par animageo dans le forum Linux
    Réponses: 8
    Dernier message: 16/11/2005, 21h02
  5. probleme apache+module python sous windows
    Par gaussprodada dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 02/11/2004, 21h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo