Re: [python] Obsluha uživatelských chyb
On 2.11.2006 8:22, Radek Kanovsky wrote: On Thu, Nov 02, 2006 at 07:32:59AM +0100, Tomas Brabenec wrote: Ja bych na to pouzil vyjimku, try/except. try: promena = int(input(zadej cislo:)) except: promena = 0 A pokud chces aby to uzivatele nepustilo dal, dokud nezada spravne cislo, tak to cele jeste strc do cyklu. Tohle prave moc bezpecne neni. Co kdyz jako uzivatel zadam na vstupu treba open('/soubor/s/velmi/dulezitymi/daty', 'w') Nebo __import__('os').unlink('/soubor/s/velmi/dulezitymi/daty') Funkce 'input' nevrati int a zhavaruje to, ale ten soubor uz bude prepsany nebo smazazny. Rozhodne je lepsi pouzit raw_input. To byl jen priklad, jak to pouzit s jeho kodem. Samozrejme ze je lepsi pouzit raw_input, neuvedomil jsem si to hned v tu chvili kdyz jsem to psal. Diky za upozorneni Tomas Brabenec ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Obsluha uživatelských chyb
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 Ahoj, zkus tohle: while True: try: promenna = int(raw_input(Zadej cislo )) break except ValueError: pass print promenna Raději bych se vyhýbal příkazu input, protože mu jdou podstrčit různé věci - není moc bezpečný. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Obsluha uživatelských chyb
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 ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Obsluha uživatelských chyb
Ja bych na to pouzil vyjimku, try/except. try: promena = int(input(zadej cislo:)) except: promena = 0 A pokud chces aby to uzivatele nepustilo dal, dokud nezada spravne cislo, tak to cele jeste strc do cyklu. TB On 1.11.2006 19:24, 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 ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Obsluha uživatelských chyb
Leos Pol napsal(a): Jakub Lucký wrote: Obavam se, ze hledate neco jineho. Build-in fce input() je vlastne eval(raw_input()) a prave raw_input, je to ono: to jsem neznal! Abych uplne nekecal, tak lze pouzit i ten input, ale musel byste uzivatele prinutit vstup davat do uvozovek (apostrofu): a to taky ne! Díky! -- geon Pavel Kosina ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Obsluha uživatelských chyb
On Thu, Nov 02, 2006 at 07:32:59AM +0100, Tomas Brabenec wrote: Ja bych na to pouzil vyjimku, try/except. try: promena = int(input(zadej cislo:)) except: promena = 0 A pokud chces aby to uzivatele nepustilo dal, dokud nezada spravne cislo, tak to cele jeste strc do cyklu. Tohle prave moc bezpecne neni. Co kdyz jako uzivatel zadam na vstupu treba open('/soubor/s/velmi/dulezitymi/daty', 'w') Nebo __import__('os').unlink('/soubor/s/velmi/dulezitymi/daty') Funkce 'input' nevrati int a zhavaruje to, ale ten soubor uz bude prepsany nebo smazazny. Rozhodne je lepsi pouzit raw_input. Radek Kaňovský ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python