raw_input

questa istruzione avendo installato python 3 non va,mi da errore.Come posso sostituirla.Grazie


il 18 Maggio 2016, da federico ferrara

Giorgio Audino il 19 Maggio 2016 ha risposto:

Ciao Federico. Puoi farmi vedere in che modo invochi il metodo? Che errore ti dà?


b=raw_input("chiedimi qualcosa") NameError: name 'raw_input' is not defined ( questo e' l'errore) ho usato anche int input ed eval input ma la stessa cosa - federico ferrara 19 Maggio 2016

In Python 3.0 il metodo raw_input() è stato rinominato in input(). Prova quindi con b=input("chiedimi qualcosa") - Giorgio Audino 19 Maggio 2016

a={"come stai":"bene grazie","quanti anni hai":"3 anni","dove abiti":"milano"} b="inizio" while b!=" ": b=input("chiedimi qualcosa") if a. has_key(b): print (a[b]) else: c=input("non capisco.Cosa devo risponderealla domanda"+b) a[b]=c chiedimi qualcosacome stai non va avanti. Postreste dirmi dov'e' l'errore?.Grazie chiedimi qualcosacome stai chiedimi qualcosa - federico ferrara 19 Maggio 2016

Giorgio Audino il 19 Maggio 2016 ha risposto:

Ciao Federico, In Python 3.0 il metodo raw_input() è stato rinominato in input(). Prova quindi con b=input("chiedimi qualcosa")

Giorgio Audino il 19 Maggio 2016 ha risposto:

Allora, nel codice che hai copiato ci sono tre errori: l'invocazione del metodo has_key per a ha uno spazio di troppo: dovrebbe essere a.has_key(...). Inoltre, non va avanti poiché hai posto come condizione di permanenza nel ciclo che b dev'essere diverso da " ", cioè uno spazio. Quando tu scrivi "come stai", questa stringa è effettivamente ancora diversa dallo spazio, per cui resterai all'interno del ciclo. Infine, nel caso ini cui a contenga la chiave cercata, la variabile c non sarebbe definita e il programma quindi fallirebbe eseguendo l'istruzione a[b]=c. Ciao!


ho corretto gli errori pero' non va avanti,chiede sempre chiedimi qualcosa. Ecco la modifica a={"come stai":"bene grazie","quanti anni hai":"3 anni","dove abiti":"milano"} b="inizio" while b!="": b=input("chiedimi qualcosa") if a.has_key(b): print(a[b]) else: c=input("non capisco.Cosa devo rispondere alla domanda"+b) a[b]=c Lo ha provato?Le sarei grato se me lo rifacesse lei.Grazie e gentilissimo - federico ferrara 19 Maggio 2016

Giorgio Audino il 19 Maggio 2016 ha risposto:

Il problema è sempre la condizione di permanenza nel ciclo while: adesso andrà avanti a chiederti "chiedimi qualcosa" finché inserisci qualcosa come domanda. Guarda qui, ho messo una possibile soluzione: http://pastebin.com/uyhFP0qr In questo modo il programma continuerà a interagire con te, imparando le risposte quando non le conosce in base a quel che scrivi tu. Ho messo come condizione di permanenza nel ciclo la lunghezza di b: se è uguale a zero esce dal ciclo. In questo modo se premi invio anziché inserire una domanda il programma termina (anche se prima ti chiede cosa rispondere ad una domanda vuota!). Si può migliorare, ma funziona!


a={"come stai":"bene grazie","quanti anni hai":"3 anni","dove abiti":"milano"} b="inizio " while b != 0: b=input("chiedimi qualcosa: ") if a.has_key(b): print (a[b]) else: c=input("non capisco. Cosa devo rispondere alla domanda "+b+"? ") a[b]=c da errore: if a.has_key(b): AttributeError: 'dict' object has no attribute 'has_key' - federico ferrara 19 Maggio 2016

Giorgio Audino il 19 Maggio 2016 ha risposto:

Sostituisci la riga if a.has_key(b): con if b in a: il metodo has_key è stato rimosso in python 3. Ti chiedo scusa ma io sul computer sono fermo alla versione precedente!

federico ferrara il 19 Maggio 2016 ha risposto:

ho risolto cosi' va bene: a={"come stai":"bene grazie","quanti anni hai":"3 anni","dove abiti":"milano"} b=" " while len(b) != 0: b=input("chiedimi qualcosa: ") if b in a: print (a[b]) else: c=input("non capisco. Cosa devo rispondere alla domanda "+b+"? ") a[b]=c


Mi sembra di sì! - Giorgio Audino 20 Maggio 2016