raw_input python

Python 3 ha sostituito il metodo raw_input() di Python 2 con il metodo input(). Se provi a utilizzare raw_input() in Python 3, incontrerai il NameError: name ‘raw_input’ errore non definito.

In questa guida, discuteremo cosa significa questo errore e perché potresti riscontrarlo. Esamineremo un esempio di questo errore, con una soluzione, in modo che tu possa imparare a risolverlo.

NameError: nome ‚Äòraw_input‚Äô non è definito

La funzione raw_input() in Python 2 raccoglie un input da un utente. Questo input può essere convertito in qualsiasi tipo di dati, come una stringa, un numero intero o un numero a virgola mobile.

Considera questo codice:

username = raw_input("Inserisci un nome utente: ")

Possiamo utilizzare questo codice per raccogliere un nome utente da un utente in Python 2.

Essere in grado di raccogliere un input da un utente significa che puoi rendere i tuoi programmi interattivi. Non devi solo definire tutti i dati nel programma che utilizzerai. Puoi chiedere a un utente di fornire alcuni dati.

In Python 3, sono state apportate molte modifiche al linguaggio Python. Tra questi c’è raw_input() che è stato rinominato in input(). Entrambe le funzioni raccolgono una parte di dati da sys.stdin (noto anche come "input standard") e restituiscono quei dati a un programma.

L’81% dei partecipanti ha dichiarato di ritenere più fiduciosi 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’avvio di un bootcamp alla ricerca del primo lavoro.

Costruiremo un programma che calcola il voto che uno studente ha guadagnato con il suo compito artistico. Il compito è su 50 e gli studenti possono ricevere un voto A, B, C o Fallito. Per iniziare, chiediamo al nostro utente di inserire un voto di cui calcoleremo il voto in lettere:

numerical_grade = int(raw_input("Inserisci un voto: "))

Usiamo raw_input() per raccogliere un voto dall’utente. L’utente deve inserire un voto nel nostro programma prima che venga eseguito il resto del programma. Noi converti il ‚Äã‚Äãvalore che un utente immette in un numero intero in modo da poter eseguire confronti numerici in un secondo momento nel nostro codice.Questo perché raw_input() restituisce una stringa per impostazione predefinita.

Utilizzeremo un’istruzione if per calcolare il voto corrispondente alla lettera:

Usiamo uno if, due elif, e un’altra istruzione per calcolare il voto in lettere che uno studente ha guadagnato in base al voto numerico che l’utente ha inserito nel programma.

Il nostro passaggio finale è stampa un messaggio alla console informando l’utente dei risultati del nostro calcolo:

Questa affermazione mostrerà sia la lettera che il voto numerico che uno studente ha guadagnato.

Eseguiamo il nostro codice e vediamo cosa succede:

Il nostro codice restituisce un errore.

La soluzione

Il messaggio di errore ci dice che stiamo facendo riferimento a un valore che non esiste. Poiché stiamo usando Python 3.x per eseguire il nostro programma, raw_input() non esiste.

Per correggere il nostro codice, dobbiamo sostituire il nostro raw_input() istruzione con un’istruzione input():

Entrambe le istruzioni raw_input() e input() sono funzionalmente uguali. Ciò significa che non è necessario apportare ulteriori modifiche al nostro codice per rendere il nostro codebase compatibile con Python 3.x.

Eseguiamo il nostro programma con questa modifica apportata:

Il nostro codice calcola con successo il voto di uno studente.

Una nota sulla riassegnazione della funzione raw_input

Una soluzione che tecnicamente funziona è assegnare il valore di raw_input() alla funzione input(). Possiamo farlo usando assegnazione variabile. Questo ti permetterà di usare una funzione chiamata raw_input() nel tuo codice Python 3.

Considera questo esempio:

raw_input = input

Questa istruzione dice a Python che il valore di raw_input() dovrebbe essere uguale a input().

"Il Karma di carriera è entrato nella mia vita quando l’ho modificato di più e mi ha aiutato rapidamente ad abbinarlo a un bootcamp. Due mesi dopo la laurea, ho trovato il lavoro dei miei sogni in linea con i miei valori e obiettivi nella vita!"

Venus, Software Engineer presso Rockbot

Questa non è una buona soluzione perché la documentazione ufficiale di Python 3 ha eliminato gradualmente il nome raw_input() in favore di input(). Alcuni sviluppatori che leggono il tuo codice potrebbero essere confuso se vedono raw_input() in una base di codice Python 3, rallentando cosi il tempo di sviluppo.

Conclusione

Il NameError: name ‚Äò raw_input‚Äô non è definito viene generato un errore quando si tenta di utilizzare il metodo raw_input() in Python 3. Per correggere questo errore, sostituire tutte le istanze di raw_input() con la funzione input() nel programma.

Ora hai le conoscenze necessarie per correggere questo errore come un programmatore Python professionista!