Python xrange

In Python 3, la funzione xrange è stata rimossa. Se provi a utilizzare la funzione xrange in un programma Python 3, incontrerai il NameError: name ‚Äòxrange‚Äô errore non definito.

In questa guida, discuteremo cosa significa questo errore e perché potresti riscontrarlo. Discuteremo un esempio di questo errore in modo che tu possa imparare a correggerlo nel tuo codice.

NameError: name ‚Äòxrange‚Äô non è definito

In Python 2, la funzione xrange ti permette di creare un intervallo di numeri. Considera il seguente frammento di codice:

Il nostro codice restituisce [0, 1, 2], ovvero tutti i numeri nell’intervallo 0 e 3 (escluso 3). La funzione xrange() restituisce un elenco di numeri.

Python 3 ha rimosso la funzione xrange() a favore di un nuova funzione chiamata range(). La funzione range(), come xrange(), produce un intervallo di numeri.

Ci sono due differenze tra xrange () e range();

  • xrange() e range() hanno nomi diversi.
  • La funzione xrange() genera un elenco di numeri. La funzione range() genera un oggetto.

Poiché la funzione range() genera un oggetto, devi convertirlo in un elenco se si desidera visualizzare un elenco di numeri. Altrimenti, questi due metodi funzionano allo stesso modo.

Uno scenario di esempio

Scriveremo un programma che mostri i primi giocatori che si trovano in cima a una carta classifica del gioco. Per iniziare, dichiariamo la nostra classifica come un elenco:

81% dei partecipanti hanno dichiarato di sentirsi più sicuri delle loro prospettive di lavoro nel settore tecnologico dopo aver frequentato un bootcamp. Fatti abbinare a un bootcamp oggi.

Il laureato medio di un bootcamp ha trascorso meno di sei mesi nella transizione di carriera, dall’inizio di un bootcamp alla ricerca del primo lavoro.

Poi, andiamo avanti per chiedere all’utente quanti punteggi desidera visualizzare:

Convertiamo il valore che un utente inserisce in un numero intero. Questo perché la funzione xrange() supporta solo numeri interi.

Successivamente, ripetiamo il nostro elenco di classifiche utilizzando un for loop. Mostreremo solo il numero di risultati che l’utente ha richiesto di visualizzare sulla console:

Utilizziamo la funzione xrange() per generare un intervallo di numeri compreso tra 0 e il numero l’utente inserito. Nel nostro ciclo for, usiamo un’istruzione print() per stampare la voce della classifica che correla con il numero nell’elenco xrange() che il nostro ciclo sta visualizzando.

Stampiamo il valore di "l" più uno accanto al nome di un giocatore. Questo ci permette di vedere la sua posizione. Perché le liste sono in indicizzato da zero, aggiungiamo uno a "l". Ciò impedisce al primo giocatore della nostra lista di essere in posizione "0" e cosi via.

Eseguiamo il nostro codice e vediamo cosa succede:

Il nostro programma restituisce un errore.

Abbiamo usato il xrange() funzione per generare un intervallo di numeri. In Python 2, questo sarebbe valido. Stiamo usando Python 3 per eseguire il nostro programma, il che significa che non possiamo fare riferimento alla funzione xrange().

Per risolvere il nostro errore, dobbiamo sostituire xrange() con il metodo range():

Per questo caso d’uso, entrambi xrange() e range() restituirà lo stesso risultato. Eseguiamo il nostro codice per vedere se funziona:

Il nostro programma mostra con successo i nomi dei giocatori del torneo che compaiono nelle prime due posizioni della classifica.

Ridefinire il metodo xrange()

Una potenziale soluzione a questo problema è definire una variabile chiamata xrange all’inizio del programma che è uguale alla funzione range():

Questa non è una buona soluzione a questo errore. Questo perché stai semplicemente evitando il problema di rinominare i metodi esistenti. Sarebbe fonte di confusione per qualcuno leggere una base di codice Python 3 e vedere Istruzioni xrange(), anche se hai definito xrange come variabile.

La soluzione migliore è rinominare le tue istruzioni xrange() a range() e per apportare le modifiche necessarie per garantire che la base di codice funzioni in Python 3.

Conclusione

Il "NameError: name ‚Äòxra nge‚Äô non è definito" viene generato un errore quando si tenta di utilizzare il metodo xrange() per creare un intervallo di numeri in Python 3. Per risolvere questo errore, aggiornare il codice per utilizzare range() fornito con Python 3.

range() è il sostituto di Python 3 per xrange(). Ora hai il know-how necessario per risolvere questo errore come un professionista!