Kaip isvengti "Traceback'u"? Python

K
  • 7 Lap '10

Sveiki,
Nusprendziau VEL pameginti paprogramuot ka nors, tad pradejau nuo daugumai zinomo "Guess The Number" zaidimo. Kiek prisiminiau parasiau programele kuri lygtais veike Bet sumaniau, kad reikia siektiek ja patobulinti, tad visu pirma norejau pameginti pasalinti viena buga. Kadangi reikia naudoti input() funkcija, ivedus raide gaunu Traceback error'a. Taigi noreciau paklausti, ka reiketu daryti, kad vietoj to, jog gauciau errora ir programa "nulustu" i ekrana butu isvestas mano norimas tekstas, ir programa prasidedu is naujo.
p.s. programos kodas:

def skaiciai():
import random

speta = 0

print 'Sveika(s)!, koks tavo vardas?'
vardas = raw_input()

skaicius = random.randint(1, 20)

print 'Na,' + vardas + ' As sugalvosiu skaiciu nuo 1 iki 20, pamegink ji atspeti'

while speta < 6:
print 'Spek'
spejimas = input()

speta = speta + 1

if skaicius > spejimas:
print 'As sugalvojau didesni skaiciu'

if skaicius < spejimas:
print 'Mano sugalvotas skaicius mazesnis'

if skaicius == spejimas:
break

if skaicius == spejimas:
speta = str(speta)
skaicius = str(skaicius)
print 'Saunuolis, ' + vardas + 'tu atspejai skaiciu ' + skaicius + ' is ' + speta + ' kartu'
else:
print 'Deja, neatspejai'

print 'Ar noretum zaisti dar karta? Jei taip parasyk "taip"'
taip = raw_input()
if taip:
return skaiciai()
skaiciai()

p.p.s. zinau, kad paskutiniose 5-iose eilutese galima vesti betka, tesiog nieko geriau nesugalvojau

S
Shookees
Paulius
  • 7 Lap '10

Rodos 8.3 http://docs.python.org/tutorial/errors.html turėtų būti būtent tai ko ieškai.

K
  • 7 Lap '10

Dėkui, ryt atidžiai perskaitysiu

K
  • 8 Lap '10

Na va, ačiū tau labai, už tą linką, internete nepastebėjau jo :/ Vienaip ar kitaip švaria galvą, per ~3minutes padariau tai ką visą vakarą bandžiau išmastyt (žalias programavime pokolkas). Taigi, jei ką nors domina, tai po pakeitimų kodas patapo toks(pakeitimus paryskinau):

def skaiciai():
    import random

    speta = 0

    print 'Sveika(s)!, koks tavo vardas?'
    vardas = raw_input()

    skaicius = random.randint(1, 20)

    print 'Na,' + vardas + ' As sugalvosiu skaiciu nuo 1 iki 20, pamegink ji atspeti'

    while speta < 6:
        print 'Spek'
        [b]try:[/b]

            spejimas = input()
        [b]except:
            print 'Privelei klaidu, cia reikia skaiciaus! Tu grazinamas i pradzia'
            return skaiciai()[/b]

        speta = speta + 1

        if skaicius > spejimas:
            print 'As sugalvojau didesni skaiciu'

        if skaicius < spejimas:
            print 'Mano sugalvotas skaicius mazesnis'

        if skaicius == spejimas:
            break

    if skaicius == spejimas:
        speta = str(speta)
        skaicius = str(skaicius)
        print 'Saunuolis, ' + vardas + 'tu atspejai skaiciu ' + skaicius + ' is ' + speta + ' kartu'
    else:
        print 'Deja, neatspejai'

    print 'Ar noretum zaisti dar karta? Jei taip parasyk "taip"'
    taip = raw_input()
    if taip:
        return skaiciai()
skaiciai()