[python] Obsluha uživatelských chyb

Leos Pol leos na radiante-corp.com
Středa Listopad 1 21:25:42 CET 2006


Jakub Lucký wrote:
> Tak, a je tu můj premiérový lamerský dotaz
>
> Mám jednoduchý kód
>
> promenna =  input("zadej cislo:")
>
> což mi v konzoli zobrazí normální dotaz, pokud ovšem místo čísel zadá 
> dotyčný řetězec, vyhodí Python relativně ošklivý error...
> Nejde to nějak "pořešit" aby se místo toho dával třeba ValueError? 
> napadají mě řešení přes Try/Except a Raise, ale nepodařilo se mi to 
> zprovoznit
>
> Děkuji za radu
> Jakub
>
Obavam se, ze hledate neco jineho. Build-in fce input() je vlastne 
eval(raw_input()) a prave raw_input, je to ono:

    promenna = raw_input('zadej cislo: ')


Pozor, vyledek teto fce je vzdy string, takze musite provest dodatecny 
prevod na cislo a prave tam provest kontrolu vstupu.
Abych uplne nekecal, tak lze pouzit i ten input, ale musel byste 
uzivatele prinutit vstup davat do uvozovek (apostrofu):

     >>> promenna = input('zadej cislo: ')
    zadej cislo: 'nezadam :-)'
     >>> promenna
    'nezadam :-)'
     >>>

Leo
BTW: pro pochopeni doporucuji nastudovat chovani eval()

-- 
----
Leos Pol
SW Engineer
Radiante Corp.

If it can be imagined,
we can implement it



Další informace o konferenci Python