Re: [python] Obsluha uživatelských chyb

2006-11-02 Tema obsahu Tomas Brabenec
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

2006-11-01 Tema obsahu Jan Martinek
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

2006-11-01 Tema obsahu Leos Pol
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

2006-11-01 Tema obsahu Tomas Brabenec
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

2006-11-01 Tema obsahu Pavel Kosina
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

2006-11-01 Tema obsahu Radek Kanovsky
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