Voila j'ai un programme qui en appelle un autre

voila le prorgramme:
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
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
 
import lceb
 
 
mode='123'
opok2 = False # True lorsque le nombre saisi est correct
while not opok2: # 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")
    nbbis = input() # On demande un opérateur
    if nbbis in mode: # l'opérateur entré est valide
        opok2 = True
if nbbis == 1:
    lceb.lceb()
 
#le programme mode:
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
 
#et le programme lceb()
from random import randint
from random import shuffle
import time
from itertools import permutations, product
 
def lceb():
 
 
    # 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,') ###')
 
#voici les prog annexe au cas ou
# Lecture de l'opérateur parmi + - / *
def lire_operateur(play, coups, ops):   
    opok = False # True lorsque l'opérateur saisi est correct
    while not opok: # Tant que l'opérateur n'est pas parmi + - / ! p *
        print('\t', coups+1, " : [* + - /] " '?', end='')
        op = input() # On demande un opérateur
        if op in ops: # l'opérateur entré est valide
            opok = True
        elif op == 'f': #Si f est entré
            play = False #On stoppe le jeu
            break
        elif op == 'h':
            os.startfile("consigne lceb.pdf")
    return op, play      # On retourne l'opérateur choisi et si le jeu continue ou pas
 
# Lecture d'un nombre           
def lire_nombre(play, coups, current_list):
    nbok = False # True lorsque le nombre saisi est correct
    while (not nbok): # Tant que le nombre saisi n'est pas correct
        print('\t', coups+1, ' : ', current_list, ' ? ', end='')
        nb1=input() # On demande le nombre
        if nb1 == 'f': # Si f est entré
            play = False # On stoppe le jeu
            break
        if nb1 == 'h':
            os.startfile("consigne lceb.pdf")
            nbok = False
        if nb1.isdigit(): # si la chaine de caractères saisie est un nombre
            nb1 = int(nb1) # Conversion de la chaine de caractère en entier
            if nb1 in current_list: # si ce nombre est dans la liste
                nbok = True
                current_list.pop(current_list.index(nb1)) # on retire le nombre de la liste du tirage courant
    return nb1, play, current_list # On retourne le nombre, si le jeu continue ou non, et le tirage courant
 
# Tirage au sort des 6 nombres proposés
def tirage(nombres):
    current_list = []
    shuffle(nombres) # on mélange la liste des nombres autorisés dans le jeu
    for i in range(1,7):
        current_list.append(nombres[i]) # on prend les 6 premiers
    return current_list # On retourne les 6 nombres
 
## definitions des fonctions (4 opérations)
def operations(a,b,op):    
    if op =='*': # Multiplication
        return(int(a*b))
    elif op == '/': # Division
        if a%b==0: # si le résultat de la division est entier
            return(int(a/b))
        else:
            return('Division non entière') # Si la division n'est pas entière, on retourne une chaine de caractères
    elif op =='+': # Addition
        return(int(a+b))
    elif op == '-': # Soustraction
        if a>b: # si le résultat de la soustraction est positif
            return(int(a-b))
        else:
            return('Soustraction négative ou nulle') # Si la soustraction est négative, on retourne une chaine de caractères
    else:
        return None