IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

IndexError list 2 dimensions


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Neolex
    Homme Profil pro
    Recherche emploi Securité informatique
    Inscrit en
    Avril 2011
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Recherche emploi Securité informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 243
    Par défaut IndexError list 2 dimensions
    Bonjour voilà mon problème , je dois calculer le plus grand produit de 4 nombres qui se suivent dans une matrice ( de gauche a droite , de droite a gauche , haut a bas , bas a haut , diagonales ... )

    J'ai donc commencé mais j'ai une erreur :
    File "./11.py", line 37, in GreatestProduct
    num = grid[i][j]*grid[i+1][j]*grid[i+2][j]*grid[i+3][j]
    IndexError: list index out of range
    Voici mon programme :
    Code python : 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    def GreatestProduct():
    	grid = [
    	[8,2,22,97,38,15,0,40,0,75,4,5,7,78,52,12,50,77,91,8],
    	[49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48,4,56,62,0],
    	[81,49,31,73,55,79,14,29,93,71,40,67,53,88,30,3,49,13,36,65],
    	[52,70,95,23,4,60,11,42,69,24,68,56,1,32,56,71,37,2,36,91],
    	[22,31,16,71,51,67,63,89,41,92,36,54,22,40,40,28,66,33,13,80],
    	[24,47,32,60,99,3,45,2,44,75,33,53,78,36,84,20,35,17,12,50],
    	[32,98,81,28,64,23,67,10,26,38,40,67,59,54,70,66,18,38,64,70],
    	[67,26,20,68,2,62,12,20,95,63,94,39,63,8,40,91,66,49,94,21],
    	[24,55,58,5,66,73,99,26,97,17,78,78,96,83,14,88,34,89,63,72],
    	[21,36,23,9,75,0,76,44,20,45,35,14,0,61,33,97,34,31,33,95],
    	[78,17,53,28,22,75,31,67,15,94,3,80,4,62,16,14,9,53,56,92],
    	[16,39,5,42,96,35,31,47,55,58,88,24,0,17,54,24,36,29,85,57],
    	[86,56,0,48,35,71,89,7,5,44,44,37,44,60,21,58,51,54,17,58],
    	[19,80,81,68,5,94,47,69,28,73,92,13,86,52,17,77,4,89,55,40],
    	[4,52,8,83,97,35,99,16,7,97,57,32,16,26,26,79,33,27,98,66],
    	[88,36,68,87,57,62,20,72,3,46,33,67,46,55,12,32,63,93,53,69],
    	[4,42,16,73,38,25,39,11,24,94,72,18,8,46,29,32,40,62,76,36],
    	[20,69,36,41,72,30,23,88,34,62,99,69,82,67,59,85,74,4,36,16],
    	[20,73,35,29,78,31,90,1,74,31,49,71,48,86,81,16,23,57,5,54],
    	[1,70,54,71,83,51,54,69,16,92,33,48,61,43,52,1,89,19,67,48]
    	]
     
    	max = 0 
     
    	#Boucle de gauche à droite
    	i=0
    	j=0
    	while i<17:
    		while j<20:
    			num = grid[i][j]*grid[i+1][j]*grid[i+2][j]*grid[i+3][j]
    			if num >max:
    				max = num
    			i+=1
    			j+=1
    	# Boucle de droite à gauche
    	i=3
    	j=0
    	while i<20:
    		while j<20:
    			num = grid[i][j]*grid[i-1][j]*grid[i-2][j]*grid[i-3][j]
    			if num > max:
    				max = num
    			i+=1
    			j+=1


    Merci d'avance !

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Il y a 20 lignes, indicées de 0 à 19. L'indice i ne devrait pas dépasser 16 pour que i+3 ne dépasse pas 19. Mais i += 1 se trouve dans la boucle while du j: il est donc indenté autant que j: c'est ça qui ne va pas.

    Conseil: un simple "print i, j" provisoire au bon endroit aurait pu te renseigner.

  3. #3
    Membre éclairé Avatar de Neolex
    Homme Profil pro
    Recherche emploi Securité informatique
    Inscrit en
    Avril 2011
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Recherche emploi Securité informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 243
    Par défaut
    Merci beaucoup de ton aide , bien que l'erreur était évidente une fois qu'on me la dite :s

    J'ai vraiment du mal avec le principe d'indentation pour les boucles , je préfère les {} comme en java et c

    Effectivement , j'aurais du tester un print ... Désolé du dérangement

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Neolex Voir le message
    Effectivement , j'aurais du tester un print ... Désolé du dérangement
    Ça ne m'a pas dérangé: tu aurais seulement été plus vite pour résoudre ton problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tache cron IndexError: list index out of range
    Par rene2200 dans le forum Général Python
    Réponses: 3
    Dernier message: 20/11/2009, 14h02
  2. Liste à 2 dimensions
    Par davels dans le forum Langage
    Réponses: 6
    Dernier message: 26/11/2008, 11h12
  3. Alim. ComboBox à partir list pls dimensions
    Par koolWak dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 28/11/2007, 22h29
  4. pb sur des listes à 2 dimensions
    Par gerard tarquin dans le forum Général Python
    Réponses: 4
    Dernier message: 24/05/2007, 12h05
  5. Trier une liste à 2 dimensions
    Par betty4492 dans le forum Général Python
    Réponses: 7
    Dernier message: 15/02/2007, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo