Lorsque j'indexe de nouveaux objets dans ma liste, l'objet ajouté le plus récent est copié dans tous les objets ajoutés précédemment de la liste. J'ai un petit programme Python fonctionnant sur un RPI3 prenant l'entrée de 4 boutons.list.append et list.expand nouvel objet copié sur toutes les entrées précédentes python
full = []
schedule = ['day', 'activity', 'clock']
n = 4
def setDay(x):
while True:
input_state18 = GPIO.input(18)
input_state23 = GPIO.input(23)
input_state24 = GPIO.input(24)
input_state25 = GPIO.input(25)
if input_state23 == False:
print('Monday')
time.sleep(0.2)
x[0] = 'Monday'
break
if input_state18 == False:
print('Tuesday')
time.sleep(0.2)
x[0] = 'Tuesday'
break
if input_state24 == False:
print('Wednesday')
time.sleep(0.2)
x[0] = 'Wednesday'
break
if input_state25 == False:
print('Thursday')
time.sleep(0.2)
x[0] = 'Thursday'
break
def setActivity(x):
#same as setDay
def setClock(x):
#same as setDay
if __name__ == "__main__":
i = 0
while i < n:
setDay(schedule)
setActivity(schedule)
setClock(schedule)
full.insert(i, schedule)
i += 1
#put schedule into first spot in total list
print(full)
Quand je lance le programme que je reçois la sortie suivante dans mon terminal:
Monday
Study
19:00
Tuesday
Training
17:00
Monday
Swimming
19:00
Thursday
Training
17:00
[['Thursday', 'Training', '17:00'], ['Thursday', 'Training', '17:00'], ['Thursday', 'Training', '17:00'], ['Thursday', 'Training', '17:00']]
Le problème se situe autour de ma boucle while dans la fonction principale. J'ai essayé d'utiliser list.append aussi mais j'ai eu la même sortie. Comment changer ma boucle while pour que les listes ajoutées ne remplacent pas la précédente?
vous réutilisez la même liste encore et encore. Créez une * nouvelle * liste à chaque itération (déplacez 'schedule = [...]' dans la boucle) ou créez une copie (voir la copie). –