Pourtant logique dans ma tête (script décrémenter/incrémenter)
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:
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:
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:
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:
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!