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 :

problème de programme python


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 4
    Points
    4
    Par défaut problème de programme python
    Bonjour,
    Voila j'ai un petit problème, car je voudrais en fait que mon programme lancer un autre programme
    Comme vous pouvez le voir ci dessous
    voici le code du programme
    ci quelqu'un peut m'aider merci bcp

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
     
    # Fonction du jeu "Le compte est bon" mode ordre
    def lcebordre():
     
        # Construction de la liste de nombres autorisés
        nombres = []
        nombres.extend(range(1,11)) # Tous les chiffres de 1 à 10
        nombres.extend(range(1,11)) # Tous les chifffres de 1 à 10
        nombres.extend([25,50,75,100]) # une fois chaque multiple de 25 jusqu'à 100
        # Liste contruite par les 3 lignes précédentes
        #nombres = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10, 25, 50, 75, 100]
     
        # Liste des 4 opérateurs
        ops = '*+/-'
     
        # Avant le tirage la liste des nombres tirés au sort est vide
        current_list=[]
     
        ##Definition de l'objectif - Tirage des 6 nombres
     
        # Objectif et tirage pour le jeu normal :
        obj=randint(100,999) # 100 <= Objectif < 1000
        current_list = tirage(nombres)
     
     
        # Sauvegarde de la liste initiale pour la recherche automatique de solution
        saved_current_list = list(current_list) 
        ##Début du jeu
        print('\t# Tirage initial :' ,current_list, '- objectif :', obj, '#')
        print()
     
     
        win = False # Le joueur n'a pas encore gagné
        play = True # Le jeu est en cours
        ##Le joueur commence
        coups = 0 # Nombre de coups joués
        while len(current_list)!=1 and not win and play : # tant que la liste n'est pas vide, la solution n'a pas été trouvée, le joueur n'a pas interrompu le jeu...
            nb1=current_list[0]
            nb2=current_list[1]
            print(Joueur, ', entrez votre opération ou "f" si terminé ou "h" pour voir les règles:')
            print(nb1, '...', nb2, '?')        
     
            # Lecture de l'opérateur
            op, play = lire_operateur(play, coups, ops)    
            current_list.pop(current_list.index(nb1))
            current_list.pop(current_list.index(nb2))
            if not play: break
     
            # Calcul de l'opération choisie par le joueur
            res = operations(nb1,nb2,op) 
            if type(res) is str: # division non entière ou soustraction négative
                print('opération non valide, reprenez')
                current_list.insert(0,nb1) # on remet dans la liste les nombres saisis
                current_list.insert(1,nb2)
                continue  
     
            if res == obj: # si la solution est trouvée
                win=True # Le joueur a gagné
     
            # Affichage de l'opération saisie    
            print('\t\t###', nb1, op, nb2, '=' , res, '###' )
            print()    
            coups+=1 # on incrémente le nombre de coups
            current_list.insert(0,res) # on ajoute le résultat courant à la liste
            if (len(current_list) != 1):
                print('\t# Tirage courant :' ,current_list, '- objectif :', obj, '#')
     
     
        if win: # si c'est gagné
            print()    
            print('### GAGNE en ', coups, ' coups : LE COMPTE EST BON !!! ###')
        else: # si c'est perdu
            # on cherche le nombre le plus proche de l'objectif
            # on fabrique une liste qui contient les ecarts avec l'objectif (en valeur absolue)    
            diff = [abs(x - obj) for x in current_list]
            # on cherche le minimum de cette liste
            mini = min(diff)
            print('### PERDU !!! Vous avez atteint ', current_list[diff.index(mini)], '(objectif :', obj,') ###')
     
     
        print()
        print("### Patientez, l'ordinateur recherche la solution...")
        print("### ...")
     
        ops = '*+/-'
        ##Recherche automatique de la solution
        best_exp = '' # Meilleure expression 
        best_val = 1e9 # Valeur la plus proche de l'objectif
        start_time = time.time() # on démarre le chrono
     
     
        saved_current_list=[str(x) for x in saved_current_list]
     
            # on fabrique aussi toutes les permutations possibles des 4 opérateurs
        for (v, w, x, y, z) in product(ops, ops, ops, ops, ops):
     
     
                # expression à 2 nombres et 1 opérateur
            exp = '(' + saved_current_list[0] + v + saved_current_list[1] + ')' # construction de l'expression (strings)
            ev = eval(exp) # on évalue l'expression     
            if (ev != int(ev)): continue # si elle n'est pas entière on passe à la combinaison suivante
            if (ev <= 0): continue# si elle est négative on passe à la combinaison suivante
            if (abs(ev-obj) < abs(best_val - obj)): # si elle est meilleure que celles rencontrees jusqu'à présent
                 best_val = ev
                 best_exp = exp
                 print('\t', exp, '=', ev)
            if best_val == obj: break # si la solution est trouvée
     
                # expression à 3 nombres et 2 opérateurs
            exp = '(' + exp + w + saved_current_list[2] + ')'
            ev = eval(exp)      
            if (ev != int(ev)): continue
            if (ev <= 0): continue
            if (abs(ev-obj) < abs(best_val - obj)):
                best_val = ev
                best_exp = exp
                print('\t', exp, '=', ev)
            if best_val == obj: break
     
            # expression à 4 nombres et 3 opérateurs
            exp = '(' + exp + x + saved_current_list[3] + ')'
            ev = eval(exp)     
            if (ev != int(ev)): continue
            if (ev <= 0): continue
            if (abs(ev-obj) < abs(best_val - obj)):
                best_val = ev
                best_exp = exp
                print('\t', exp, '=', ev)
            if best_val == obj: break
     
            # expression à 5 nombres et 4 opérateurs    
            exp = '(' + exp + y + saved_current_list[4] + ')'
            ev = eval(exp)      
            if (ev != int(ev)): continue
            if (ev <= 0): continue
            if (abs(ev-obj) < abs(best_val - obj)):
                best_val = ev
                best_exp = exp
            print('\t', exp, '=', ev)
            if best_val == obj: break
     
            # expression à 6 nombres et 5 opérateurs    
            exp = '(' + exp + z + saved_current_list[5] + ')'
            ev = eval(exp)      
            if (ev != int(ev)): continue
            if (ev <= 0): continue
            if (abs(ev-obj) < abs(best_val - obj)):
                    best_val = ev
                    best_exp = exp
                    print('\t', exp, '=', ev)
            if best_val == obj: break
     
        end_time = time.time() # on arrete le chrono
     
     
        print('### Meilleure solution : {} = {} trouvée en {:.3f} s'.format(best_exp, best_val, end_time - start_time) )  
     
    #Création du programme final
    def lceb():
     
        print()
        print('########################################')
        print('#                                      #')
        print('#          LE COMPTE EST BON           #')
        print('#                                      #')
        print('########################################')
        print()
        Joueur=str(input('Quel est votre prénom ? '))
        print()
        print()
        print(Joueur," veuillez lire les consignes de jeux qui s'affichent, merci")
        time.sleep(4)
        os.startfile("consigne lceb.pdf")
        time.sleep(2)
        print()
        print()
        print("Vous avez donc le choix entre trois modes de jeux, lequels voulez vous choisir?")
        print()
        mode='123'
        opok = False # True lorsque le nombre saisi est correct
        while not opok: # Tant que le nombre n'est pas parmi 1,2,3
            print("Taper le '1' pour le mode normal, le '2' pour le mode opération et enfin le '3' pour le mode ordre")
            nb = input() # On demande un opérateur
            if nb in mode: # l'opérateur entré est valide
                opok = True
        n=0
        if nb == 1:
            n=lcebnormal()
        elif nb == 2:
            n=lceboperation()
        elif nb == 3:
            n=lcebordre()
        return n

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par grobient Voir le message
    Voila j'ai un petit problème, car je voudrais en fait que mon programme lancer un autre programme
    Comme vous pouvez le voir ci dessous
    Un programme qui lance un autre programme, c'est quelque chose qui s'écrit en 2/3 lignes: si vous voulez de l'aide, pourquoi infliger la lecture de 195 lignes pour y chercher ce qui pourrait y ressembler?
    Décrire le problème rencontré par rapport à ce que vous attendiez n'est pas un luxe non plus.

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    je reecrit le message en plus soft

    voila mon programme:
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    def lceb():
        nb = lire_mode()
        if nb == 1:
    lcebnormal

    PS: voici le programme lceb()
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
     
    def lcebnormal():
        print()
        print('########################################')
        print('#                                      #')
        print('#          LE COMPTE EST BON           #')
        print('#                                      #')
        print('########################################')
        print()
        Joueur=str(input('Quel est votre prénom ? '))
        print()
     
        # Construction de la liste de nombres autorisés
        nombres = []
        nombres.extend(range(1,11)) # Tous les chiffres de 1 à 10
        nombres.extend(range(1,11)) # Tous les chifffres de 1 à 10
        nombres.extend([25,50,75,100]) # une fois chaque multiple de 25 jusqu'à 100
        # Liste contruite par les 3 lignes précédentes
        #nombres = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10, 25, 50, 75, 100]
     
        # Liste des 4 opérateurs
        ops = '*+/-'
     
        # Avant le tirage la liste des nombres tirés au sort est vide
        current_list=[]
     
        ##Definition de l'objectif - Tirage des 6 nombres
     
        # Objectif et tirage pour le jeu normal :
        obj=randint(100,999) # 100 <= Objectif < 1000
        current_list = tirage(nombres)
     
     
        # Sauvegarde de la liste initiale pour la recherche automatique de solution
        saved_current_list = list(current_list) 
        ##Début du jeu
        print('\t# Tirage initial :' ,current_list, '- objectif :', obj, '#')
        print()
     
     
        win = False # Le joueur n'a pas encore gagné
        play = True # Le jeu est en cours
        ##Le joueur commence
        coups = 0 # Nombre de coups joués
        while len(current_list)!=1 and not win and play : # tant que la liste n'est pas vide, la solution n'a pas été trouvée, le joueur n'a pas interrompu le jeu...
            print(Joueur, ', entrez votre opération ou "f" si terminé ou "h" pour voir les règles:')
     
            # Lecture du premier terme de l'opération
            nbok = False
            nb1, play, current_list = lire_nombre(play, coups, current_list)              
            if not play: break # Si le joueur a souhaité arreter le jeu
     
            # Lecture de l'opérateur
            op, play = lire_operateur(play, coups, ops)    
            if not play: break
     
            # Lecture du second terme de l'opération
            nbok = False
            nb2, play, current_list = lire_nombre(play, coups, current_list)  
            if not play: break  # Si le joueur a souhaité arreter le jeu
     
            # Calcul de l'opération choisie par le joueur
            res = operations(nb1,nb2,op) 
            if type(res) is str: # division non entière ou soustraction négative
                print('opération non valide, reprenez')
                current_list.append(nb1) # on remet dans la liste les nombres saisis
                current_list.append(nb2)
                continue  
     
            if res == obj: # si la solution est trouvée
                win=True # Le joueur a gagné
     
            # Affichage de l'opération saisie    
            print('\t\t###', nb1, op, nb2, '=' , res, '###' )
            print()    
            coups+=1 # on incrémente le nombre de coups
            current_list.append(res) # on ajoute le résultat courant à la liste
            if (len(current_list) != 1):
                print('\t# Tirage courant :' ,current_list, '- objectif :', obj, '#')
     
     
        if win: # si c'est gagné
            print()    
            print('### GAGNE en ', coups, ' coups : LE COMPTE EST BON !!! ###')
        else: # si c'est perdu
            # on cherche le nombre le plus proche de l'objectif
            # on fabrique une liste qui contient les ecarts avec l'objectif (en valeur absolue)    
            diff = [abs(x - obj) for x in current_list]
            # on cherche le minimum de cette liste
            mini = min(diff)
            print('### PERDU !!! Vous avez atteint ', current_list[diff.index(mini)], '(objectif :', obj,') ###')
     
     
        print()
        print("### Patientez, l'ordinateur recherche la solution...")
        print("### ...")
     
        ops = '*+/-'
        ##Recherche automatique de la solution
        best_exp = '' # Meilleure expression 
        best_val = 1e9 # Valeur la plus proche de l'objectif
        start_time = time.time() # on démarre le chrono
     
     
        # on fabrique toutes les permutations possibles des 6 nombres
        # La fonction permutations retourne toutes les permutations d'un ensemble 
        for (a, b, c, d, e, f) in permutations([str(x) for x in saved_current_list]):
     
            # on fabrique aussi toutes les permutations possibles des 4 opérateurs
            for (v, w, x, y, z) in product(ops, ops, ops, ops, ops):
     
     
                # expression à 2 nombres et 1 opérateur
                exp = '(' + a + v + b + ')' # construction de l'expression (strings)
                ev = eval(exp) # on évalue l'expression     
                if (ev != int(ev)): continue # si elle n'est pas entière on passe à la combinaison suivante
                if (ev <= 0): continue# si elle est négative on passe à la combinaison suivante
                if (abs(ev-obj) < abs(best_val - obj)): # si elle est meilleure que celles rencontrees jusqu'à présent
                    best_val = ev
                    best_exp = exp
                    print('\t', exp, '=', ev)
                if best_val == obj: break # si la solution est trouvée
     
                # expression à 3 nombres et 2 opérateurs
                exp = '(' + exp + w + c + ')'
                ev = eval(exp)      
                if (ev != int(ev)): continue
                if (ev <= 0): continue
                if (abs(ev-obj) < abs(best_val - obj)):
                    best_val = ev
                    best_exp = exp
                    print('\t', exp, '=', ev)
                if best_val == obj: break
     
                # expression à 4 nombres et 3 opérateurs
                exp = '(' + exp + x + d + ')'
                ev = eval(exp)     
                if (ev != int(ev)): continue
                if (ev <= 0): continue
                if (abs(ev-obj) < abs(best_val - obj)):
                    best_val = ev
                    best_exp = exp
                    print('\t', exp, '=', ev)
                if best_val == obj: break
     
                # expression à 5 nombres et 4 opérateurs    
                exp = '(' + exp + y + e + ')'
                ev = eval(exp)      
                if (ev != int(ev)): continue
                if (ev <= 0): continue
                if (abs(ev-obj) < abs(best_val - obj)):
                    best_val = ev
                    best_exp = exp
                    print('\t', exp, '=', ev)
                if best_val == obj: break
     
                # expression à 6 nombres et 5 opérateurs    
                exp = '(' + exp + z + f + ')'
                ev = eval(exp)      
                if (ev != int(ev)): continue
                if (ev <= 0): continue
                if (abs(ev-obj) < abs(best_val - obj)):
                    best_val = ev
                    best_exp = exp
                    print('\t', exp, '=', ev)
                if best_val == obj: break
     
        end_time = time.time() # on arrete le chrono
     
     
        print('### Meilleure solution : {} = {} trouvée en {:.3f} s'.format(best_exp, best_val, end_time - start_time) )

    Ps2: voici le prog lire mode
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    def lire_mode():
     
        mode='123'
        opok = False # True lorsque le nombre saisi est correct
        while not opok: # Tant que le nombre n'est pas parmi 1,2,3
            print("Taper le '1' pour le mode normal, le '2' pour le mode opération et enfin le '3' pour le mode ordre")
            nb = input() # On demande un opérateur
            if nb in mode: # l'opérateur entré est valide
                opok = True
            return nb

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Il suffit de les importer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    from lcebnormal import lcebnormal
    from liremode import lire_mode
     
    def lceb():
        nb = lire_mode()
        if nb == 1:
            lcebnormal()

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    je reçois un message d'erreur
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    from lcebnormal import lcebnormal
     
    ModuleNotFoundError: No module named 'lcebnormal'

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    C'est malin, j'ai mis ce nom parce que je ne connais pas le nom de ton fichier. Tu dois adapter bien-sur.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    ah ok ok
    donc je mets le nom de mon fichier python

Discussions similaires

  1. Problème programme Python 3 sous Tkinter
    Par vbvero dans le forum Tkinter
    Réponses: 2
    Dernier message: 05/02/2017, 17h35
  2. problème dans un programme python
    Par finelame13 dans le forum Général Python
    Réponses: 3
    Dernier message: 10/06/2015, 11h31
  3. problème premier programme avec python
    Par adolphemartins dans le forum Général Python
    Réponses: 3
    Dernier message: 04/12/2011, 12h45
  4. Problème de programmation en Python
    Par Victoria007 dans le forum Général Python
    Réponses: 4
    Dernier message: 19/09/2008, 12h12
  5. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59

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