[python] Amiga Python, Rekurze a non ASCII poznamka
Jan Jakubuv
cbboy na matfyz.cz
Pátek Červen 26 13:55:07 CEST 2009
Zdravim,
Ad 1:
On Fri, Jun 26, 2009 at 01:08:26AM +0200, Martin wrote:
> Zdravim, mam 2 problemy.
>
> Prvy problem je s rekurziou v programe pod pocitacom Amiga.
> Pokial dam v Amiga Pythonu prikaz: print sys.getrecursionlimit(), vyhodi mi to vysledok 1000 tak ako u PC. Zistil som ale, ze skutocny limit zanorenia u Amigy neni 1000 ale nejako okolo 139, preto mi to asi v polovine mojej hry vyhodi chybu:
> MemoryError: Stack Overflow. Prikazom: sys.setrecursionlimit() mozem teda dosiahnut mensi limit zanorenia ako 139, kedy mi program skonci hlaskou: RuntimeError: maximum recursion depth exceeded.
>
> nerekurzivni reseni:
> def Hledej(start):
> while not podminka:
> #neco delej
> start+=1
> return vysledek
>
Jednoduse prepiste funkci tak, ze nebude pouzivat rekurzivni volani. V tomto
pripade, kdy vysledek rekurzivniho volani `pesinka` neni nikde pouzit a
pouze se propaguje pri navratu, by to nemel by problem. Obecne, pokud
prekrocite recursion limit (byt i jen onu hodnotu 139), je na miste
prehodnotit navrh aplikace. Navic se domnivam, ze limit prekrocite i na PC
pokud dostatecne krat (cca 1000x ?) stisknete enter.
Ad 2:
> Druhy problem mam s vypisovanim nasledovnej hlasky:
> __main__:1: DeprecationWarning: NON-ASCII charakter '\xf8' in file mojProgram.py on line 74, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details.
>
>
> # -*- coding: latin2 -*-
> print 'Amiga 1200 je počítač z roku 1992'
>
Nemam zkusenosti s Pythonem na Amize. Nicmene, pokud vidite varovani, ze
jste neuvedl kodovani souboru, prestoze jste ho uvedl pomoci radku " -*-
coding: latin2 -*- ", tak budto mate chybu v onon radku nastavujicim
kodovani nebo se to v Amiga Pythonu dela jinak (nebo neco co nevim co ;-)).
S pozdravem,
honza.
--
Heriot-Watt University is a Scottish charity
registered under charity number SC000278.
Další informace o konferenci Python