Erreur incomprehanssible

Benjamin83260 Messages postés 124 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 846
 
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