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:
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
    }
]
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.

Tout ça est enfermé dans une boucle infinie:
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
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
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
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.

Voici le code en entier:
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)
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!

Merci, passez une bonne journée!