Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [PYTHON] list index out of range

    Salve,

    ho il seguente codice:
    Codice PHP:
    import random

    carte 
    = ['1b','2b','3b','4b','5b','6b','7b','8b','9b','10b','1c','2c','3c','4c','5c','6c','7c','8c','9c','10c','1d','2d','3d','4d','5d','6d','7d','8d','9d','10d','1s','2s','3s','4s','5s','6s','7s','8s','9s','10s']

    r1 carte[random.randint(0len(carte))]
    del carte[carte.index(r1)]
    r2 carte[random.randint(0len(carte))]
    del carte[carte.index(r2)]
    r3 carte[random.randint(0len(carte))]
    del carte[carte.index(r3)] 
    Solo a volte però mi dà questo errore:
    codice:
    Traceback (most recent call last):
      File "****\main.py", line 7, in <module>
        r2 = carte[random.randint(0, len(carte))]
    IndexError: list index out of range
    A volte anzichè r2, esce r1 o r3...

    Come mai?


    Grazie


    :Ciauz:

  2. #2
    Accade quando random sceglie il numero più alto del range (es: dato un un range compreso tra 0 e 40 sceglie 40).
    Questo perchè le liste partono da zero e non da 1 (a differenza di len()).
    Esempio:

    codice:
    >>> L = ['a', 'b', 'c']
    >>> len(L)
    3
    ...come vedi len ritorna 3, però l'ultimo elemento della lista è alla posizione 2:

    codice:
    >>> L[2]
    'c'
    ...e non 3:

    codice:
    >>> L[3]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    Puoi risolvere sostituendo:

    codice:
    r1 = carte[random.randint(0, len(carte))]
    ...con (nota il "-1"):

    codice:
    r1 = carte[random.randint(0, len(carte) -1)]
    ...oppure, ancora meglio:

    codice:
    r1 = carte.pop(random.randint(0, len(carte) -1))
    ...cosi eviti di cancellare a mano l'elemento utilizzando del().
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  3. #3
    che sfuggita...

    sarà per il troppo studio


    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.