2017-10-20 4 views
-3

J'essaye de faire passer un caractère "x" dans une liste, d'un index à l'autre, puis de revenir encore et encore. Je veux savoir s'il est possible de le rendre constant, de sorte que dans le shell Python, je ne vois qu'une seule liste avec un x en mouvement. J'ai essayé de le faire avec ce code, mais je suis à peu près sûr qu'il doit y avoir un autre moyen de le faire. Désolé pour mon identité, je suis nouveau et je ne comprends pas grand-chose.
Aimerais votre aide, merci.listes python: IndexError: index d'assignation de liste hors plage


def vec(): 


    vec=[] 
    z=0 
    x="x" 
    e=" " 
    y=1 

    while (x=="x"): 
     while (y<=98): 

      vec[z]= e 
      z=z+1 
      vec[y]=x 
      y=y+1 

    vec[y]= e 
    w=98 

    m=99 

    while (m>0): 
     vec[m]= e 
     vec[w]= x 
     w=w-1 
     m=m-1 
+0

Note de terminologie: le terme vecteur n'est pas couramment utilisé en Python, mais plutôt, on l'appelle des objets 'list'. En outre, utilisez toujours une balise python générique et n'utilisez une version spécifique que si votre problème ou votre question est spécifique à la version, mais incluez toujours la balise générique. –

+4

Copie possible de [IndexError: index d'assignation de liste hors limites] (https://stackoverflow.com/questions/5653533/indexerror-list-assignment-index-out-of-range) –

+1

Je suggérerais si vous pouvez indenter le code correctement sinon il n'est pas lisible. les espaces sont importants en python. En outre, expliquez ce que vous essayez de faire dans le code. – shunya

Répondre

0

vous obtenez l'indice hors de portée parce que votre liste « VEC » ne contient aucun élément. Vous devez l'initialiser d'une manière ou d'une autre. Une façon est de faire quelque chose comme:

vec = [e] * 100 

Cela va créer une liste de 100 éléments, chacun initialisé à la valeur e.