Waarom je nooit input moet gebruiken
Iedere programmeertaal heeft zijn eigenaardigheden. In Python is dat bijvoorbeeld het gebruik van het input commando, of beter: het niet gebruiken ervan.
x = input( 'x = ' ) print "x = ", x
Als je de bovenstaande Python code uitvoert en je geeft exit() als waarde, dan zal het exit command uitgevoerd worden en het programma stoppen, zonder de tweede regel uit te voeren.Het direct uitvoeren van code is een ernstig veiligheidsrisico. Je kunt dus beter het input command in Python nooit gebruiken.Een beter alternatief is het raw_input commando, dat een stringwaarde teruggeeft. Als je dat naar een integer waarde moet converteren, kun je deze code gebruiken:
x = raw_input( 'x = ' ) x = int(float(x))
Als je nu exit() invoert, geeft Python een foutmelding:
ValueError: invalid literal for float(): exit()
Die foutmelding kun je opvangen met een try…except clausule binnen een eindeloze lus:
def input(prompt, errmsg):
while True:
try:
x = raw_input(prompt)
x = int(float(x))
return x
except:
print errmsg
if __name__ == "__main__":
x = input( "x: ", "geef een getal" )
print "x =", x
Nog geen reacties
Leave a reply