Bonjour!
Je suis nouveau sur le forum(et en python), je cherche actuellement quelqu'un capable de m'éclairer sur un de mes scripts python qui ne fonctionne tout simplement pas. C'est pourtant logique dans ma tête mais en pratique c'est une toute autre histoire.
Pour remettre en contexte, c'est un exercice que je me suis donné. J'ai une liste de deux dictionnaire:
Le champ "value" correspond tout simplement a un nombre nécessairement plus grand ou petit que l'autre. "action" va déterminer si le nombre va s'incrémenter ou se décrémenter. Si par exemple j'ai "action":True, alors "value":x va s'incrémenter, et inversement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 numbers = [ { 'value': 1, 'action': True }, { 'value': 10, 'action': False } ]
Tout ça est enfermé dans une boucle infinie:
Le print du tableau est nécessaire pour débug et en savoir plus dans l'avancement du script. La fonction changeEach va boucler sur chaque élément de la liste de nombre et en fonction du champ "action" va effectuer ou non l'incrémentation ou la décrémentation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 while True: system('clear') # pour avoir le terminal clair print(numbers) changeEach() sleep(1) # pour éviter de Looper trop vite
J'aimerais que quand les deux nombres sont un à coté de l'autre (par exemple 5 et 6) ils arrêtent d'incrémenter/décrémenter. Hors ils continuent.
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 def isfree(numberWanted): for number in numbers: if not number['value'] == numberWanted: return True else: return False def changeEach(): for number in numbers: if number['action'] == True: wantedNumber = number['value']+1 number['value'] = wantedNumber if isfree(wantedNumber) else None else: wantedNumber = number['value']-1 number['value'] = wantedNumber if isfree(wantedNumber) else None
Voici le code en entier:
Voilà, j'espère avoir été assez clair dans mes propos et mes idées. L'exercice semble être bizarre mais être bloqué depuis quelques temps dessus me rend fou et un conseil ça serait génial!
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 from os import system from time import sleep numbers = [ { 'value': 1, 'action': True }, { 'value': 10, 'action': False } ] def isfree(numberWanted): for number in numbers: if not number['value'] == numberWanted: return True else: return False def changeEach(): for number in numbers: if number['action'] == True: wantedNumber = number['value']+1 number['value'] = wantedNumber if isfree(wantedNumber) else None else: wantedNumber = number['value']-1 number['value'] = wantedNumber if isfree(wantedNumber) else None while True: system('clear') print(numbers) changeEach() sleep(1)
Merci, passez une bonne journée!
Partager