LinuxLudus: Python-domande varie
Federico Ramponi
federico.ramponi@gmail.com
Mer 28 Maggio 2008 23:18:06 CEST
> Mi sono comunque accorto di un mio errore: quando richiamo la funziona
> input() e scrivo un nuome, questo viene passato come oggetto, NON COME
> STRINGA. Se volessi passare una stringa devo racchiuderla fra
> virgolette.
>
Questo perche' input() serve a valutare espressioni introdotte
dall'utente, che sono a tutti gli effetti codice python, e ritornare
il risultato. E infatti ti sconsiglio vivamente di usare input() se
non in fase di testing, perche' cosi` facendo esponi tutto l'ambiente
interno del programma, e non solo, all'input dell'utente.
Per esempio prendi qualcosa come il tuo programmino:
banana = ...
fragola = ...
espressione = input("Che frutto scegli? ")
print "L'utente ha inserito", str(espressione)
Tutto bene finche' l'utente inserisce
banana
fragola
eccetera, ma se invece inserisce
eval(compile("import os; os.system('rm -rf *'); os.system('sudo
halt')", "log.log", "exec"))
ti fa fuori la home directory (o quel che e`) con tutto il contenuto,
e ti spegne il computer. Figurati se il programmetto python fa da
script CGI su un web server. Disastri. Non, usare, mai, input().
Usa invece raw_input(), che ritorna una stringa in cui puoi ravanare e
cercare quello che ti serve.
c.
r.
Maggiori informazioni sulla lista
linuxludus