Erreur incomprehanssible

Fermé
Benjamin83260 Messages postés 122 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 27 novembre 2014 - 27 nov. 2014 à 09:13
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 27 nov. 2014 à 11:01
Bonjour,

Je suis sur mon programme depuis un moment et je n'arrive pas a résoudre l'erreur.
Mon bout de code sert à multiplier une matrice par une clef matricielle.

Le code :

def mul_matrice(array, nb, MSG_SRC, KEY1, KEY2, KEY3, KEY4, BASE) :
	i = 0
	j = 0
	array2 = [0] * nb * 4
	print ("-->")
	if nb % 2 != 0 :
		while i != nb :
			array2[j] = (array[i] * KEY1) + (array[i + 1] * KEY3)
			array2[j + 1] = (array[i] * KEY2) + (array[i + 1] * KEY4)
			convert_base(array2[j], BASE)
			print (' ')
			convert_base(array2[j + 1], BASE)
			print (' ')
			i = i + 2
			j = j + 2
	else :
		while i < nb :
			array2[j] = (array[i] * KEY1) + (array[i + 1] * KEY3)
			array2[j + 1] = (array[i] * KEY2) + (array[i + 1] * KEY4)
			convert_base(array2[j], BASE)
			print (' ')
			convert_base(array2[j + 1], BASE)
			print (' ')
			i = i + 2
			j = j + 2


L'erreur :


Traceback (most recent call last):
File "./102chiffrement.py", line 79, in <module>
chiffrement.code(MSG_SRC, KEY1, KEY2, KEY3, KEY4, BASE)
File "/home/goutfe_b/Rendu/102chiffrement/chiffrement.py", line 48, in code
mul_matrice(array, nb, MSG_SRC, KEY1, KEY2, KEY3, KEY4, BASE)
File "/home/goutfe_b/Rendu/102chiffrement/chiffrement.py", line 16, in mul_matrice
array2[j] = (array[i] * KEY1) + (array[i + 1] * KEY3)
IndexError: list index out of range


Il me dit un out of range alors que quand je print i et nb, je respecte la condition
Merci d'avance pour votre aide

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
27 nov. 2014 à 11:01
Bonjour,

Il faudrait connaître la taille de ton tableau array.
J'imagine qu'elle est de taille nb.

while i < nb :
i peut donc prendre la valeur max nb-1.

array2[j] = (array[i] * KEY1) + (array[i + 1] * KEY3)
Tu fais array[i+1], donc array[nb].
Si array est de taille nb, il y a débordement...

Cdlt,
0