[python] raw_input() jeste jednou (bylo raw_input() bug ... vyvoj
Pythonu, jimavy pribeh)
geon
geon na post.cz
Středa Srpen 3 12:42:36 CEST 2005
Petr Prikryl napsal(a):
>[...]
>
>
>>Je to tam, ale je mezi uzavřenými [...] Částečné řešení
>>lze nalézt u poslední poznámky by birkenfeld, tj. explicitně
>>
>> raw_input(s.encode(sys.stdout.encoding))
>>
>>Dá se to vyřešit centralizovaně například definicí vlastní funkce:
>>
>>def my_input(s):
>> import sys
>> return raw_input(s.encode(sys.stdout.encoding))
>>
>>Ale moc se mi to nelíbí, protože takhle by měla fungovat
>>raw_input() už "od narození". [...]
>>
>>
>
>Až teď jsem si všiml názoru GvR, který se týká
>raw_input() -- viz http://www.python.org/peps/pep-3000.html
>a http://www.python.org/doc/essays/ppt/regrets/PythonRegrets.pdf
>
>Stučně řečeno, GvR lituje, že raw_input() vůbec vzniklo.
>Doporučuje používat sys.stdin.readline(). Něco na tom je.
>Nedobře fungující implementaci raw_input() můžu jednoduše
>nahradit vlastní malou funkcí:
>
>========================================
>import sys
>
>def my_input(prompt):
> sys.stdout.write(prompt)
> return sys.stdin.readline()
>
>r = my_input('prompt: ')
>print r
>========================================
>
>pepr
>
>
Mám k tomu snad 2 poznámky:
* rozhodně to není pro začátečníky. Je to takové nejednoduché, nepřímé.
Sice by se to dalo udělat, jako třebas v kurzu livewires, kde si takto
podobně nadefinují funkce i na čtení čísel i s ošetřením hodnot, ale to
zas funguje jen pokud člověk jede v livewires nebo v tom jednom kurzu,
kde to je implementováno
* proč se takto neimplementuje raw_input? (možná že to tam guido píše,
četl jsem to zhruba)
Myslím že není dobré začátečníky hned upozorňovat na bug, který je téměř
v prvním příkazu, se kterým se setkají. Spíš je se snažit přimět
nepoužívat diakritiku a teprv když na to sami přijdou, že jim to
nefunguje, tak jim napovědět buď co píšeš nebo staré dobré:
# -*- coding: ...... -*-
vyzva=u"Otázka s nabodeníčky: "
print vyzva,
odpoved=raw_input()
--
geon
Vyjímka je pravidlo. Rekurzivní.
------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://www.py.cz/pipermail/python/attachments/20050803/c23a7349/attachment.htm
Další informace o konferenci Python