Je n'arrive pas à comprendre ce qui se passe ici. J'ai quelques listes mises en place, une pour chaque couleur avec les valeurs RVB correspondantes comme membre, puis la liste, colors [], qui contient chaque liste de couleurs. Ensuite, j'ai une boucle for imbriquée: la boucle externe crée des colonnes de rectangles remplis de couleurs et la boucle interne avance la ligne. Pas compliqué, comme je le vois. J'essaie d'utiliser numdown pour parcourir la liste des couleurs [] de sorte que tous les deux rangs la couleur change pour le membre correspondant dans les couleurs []. Le problème est que lorsque j'utilise le numover de la liste interne, cela fonctionne bien, sauf évidemment que je reçois le mauvais modèle de couleur (les couleurs avancent plutôt que vers le bas). Si j'utilise numdown pour parcourir la liste, seul le membre blanc semble être accédé, même si dans la boucle for interne I 'print (numdown)' ou même 'print (colors [numdown])' la valeur correcte est imprimée .(Python) Liste traversée dans une boucle for imbriquée?
Pourquoi est-ce le cas? Pourquoi si j'utilise le numero de inner-for, le membre de la liste est-il correctement accédé, mais si j'utilise le numdown de outer-for, il se casse?
Il me semble que cela pourrait avoir quelque chose à voir avec pygame, bien que je n'aurais aucune idée de quoi.
(De plus, comme vraiment que je suis juste commençant par Python, si vous voyez quoi que ce soit d'autre valeur de sauter sur, méthode ou style sage, s'il vous plaît ne hésitez pas à le signaler.)
import pygame, sys
from pygame.locals import *
#initialize pygame
pygame.init()
#assign display window dimensions
winwidth = 400
winheight = 700
#number of rows, number of colums
numrows = range(1,11)
numcols = range(1,11)
#Keeping brick size proportionate to the window size
brickwidth = winwidth/(len(numrows))
brickheight = winheight/4
#Pixel space above the breakout area
bricktopspace = winheight/7
#Set display window width, height
windowSurface = pygame.display.set_mode((winwidth, winheight), 0, 0)
brickxcoord = 0
blue = [0, 0, 255]
green = [0, 255, 0]
yellow = [255, 255, 0]
red = [255, 0, 0]
white = [255, 255, 255]
colors = range(0,11)
colors[1] = white
colors[2] = white
colors[3] = red
colors[4] = red
colors[5] = green
colors[6] = green
colors[7] = yellow
colors[8] = yellow
colors[9] = blue
colors[10] = blue
class Setup():
for numdown in numcols:
for numover in numrows:
print(numdown)
pygame.draw.rect(windowSurface, colors[numdown], (brickxcoord,
bricktopspace, brickwidth, brickheight))
brickxcoord = brickxcoord + brickwidth
bricktopspace = bricktopspace + brickheight
class Main():
Setup()
pygame.display.update()
Où sont les nombres numériques et les nombres définis? Pourquoi tout est dans une déclaration de classe?Si vous connaissez la programmation, veuillez lire Dive into Python http://diveintopython.org/, vous épargnerez beaucoup de problèmes. Sinon, vous pourriez vouloir http://learnpythonthehardway.org – stefanw
Ce n'est pas tout le code, juste l'extrait pertinent. numcols et numrows sont en fait définis, ce ne sont que des listes de 1-11. – ryanklee
'for ... in' va itérer sur vos listes en commençant par l'index' 0', pas '1'. Cela pourrait être votre problème. S'il vous plaît poster plus de code. –