Pagina 1 di 1

[Risolto] Python: global name 'xxx' is not defined

Inviato: martedì 29 aprile 2014, 21:53
da raffaele63
Ciao,
sono fermo con la programmazione perché sto avendo un paio di errori nel codice qui sotto. Fino a ieri tutto procedeva bene, ma oggi quando ho ripreso il progetto mi ha dato problemi e mi trovo spiazzato perché "non so perché" :D .
Vi posto il codice:

Codice: Seleziona tutto

import random, sys

def scelta():
    print ("A: ")
    print
    print ("B: ")
    print
    print ("C: ")
    print
    print ("D: ")
    print
    print ("E: ")
    print
    print ("F: Uscita")
    print
    iniz=raw_input("\t\tInserire l'opzione: ")
    if iniz=="A":
        scelta_A()
        print
        scelta()
    elif iniz=="B":
        scelta_B()
        print
        scelta()
    elif iniz=="C":
        scelta_C()
        print
        scelta()
    elif iniz=="D":
        scelta_D()
        print
        scelta()
    elif iniz=="E":
        scelta_E()
        print
        scelta()
    elif iniz=="F":
        scelta_F()

def num_soc():
    for i in range(0,5): sys.stdout.write(str(random.randint(0,5)))
    print (" -"),num_id_soc()

def gen_numerazione():
    foo = range(1,n_sett+1)
    random.shuffle(foo)
    print ",".join([str(i)for i in foo])

def scelta_A():
    print
    num_id_soc=input("\t\tInserite il codice di riferimento: ")
    print
    num_soc()
    tsoc=input("Tessera sociale: ")
    cogn=raw_input("Cognome: ")
    nome=raw_input("Nome: ")
    resi=raw_input("Via e civico: ")
    cpci=raw_input("CAP, Citta e Prov.: ")
    codf=raw_input("Codice fiscale: ")
    tssn=input("Tessera SSN: ")
    tele=raw_input("Telefono: ")
    print
    print ("\t\tAttenzione: scegliere l'opzione B solo se agonista")
    
def scelta_B():
    pass

def scelta_C():
    gara=raw_input("Tipologia gara: ")
    tipo=raw_input("Evento sportivo: ")
    soci=raw_input("Tesserato: ")
    n_sett=input("Quanti settori? ")
    print
    gen_numerazione()
    
def scelta_D():
    pass

def scelta_E():
    pass

def scelta_F():
    quit

print("\t\tPer favore indicare l'opzione desiderata")
print
scelta()
Ecco, gli errori che mi fermano sono nella funzione num_soc, e nella funzione gen_numerazione, che ripeto ieri andava tutto bene, ho necessità di capire cosa può essere andato storto.
Grazie.

Re: Ora ho un paio di intoppi

Inviato: martedì 29 aprile 2014, 22:08
da Zoff
Dai un titolo pertinente alla discussione. Grazie.

Re: Ora ho un paio di intoppi

Inviato: martedì 29 aprile 2014, 22:38
da raffaele63
Zoff ha scritto:Dai un titolo pertinente alla discussione. Grazie.
Assolutamente, e per grazia hai suggerimenti? perché al momento non mi sovviene nulla che non sia: avere un paio di problemini o errori di codice, ma nel caso sapresti consigliarmi?

Re: Ora ho un paio di intoppi

Inviato: martedì 29 aprile 2014, 22:40
da Zoff
Direi [Python] + errore che ricevi

Re: Ora ho un paio di intoppi

Inviato: martedì 29 aprile 2014, 22:59
da raffaele63
Opss, anche ieri ho scordato di descrivere il linguaggio. Chiedo scusa ma sono distratto dal codice e non espongo correttamente.

Re: Python: global name 'xxxxx' is not defined

Inviato: mercoledì 30 aprile 2014, 22:09
da Claudio_F
L'errore non è nel codice che hai riportato, in cui non compare neppure una 'x'.

Re: Python: global name 'xxxxx' is not defined

Inviato: mercoledì 30 aprile 2014, 22:10
da Zoff
Ovviamente l'errore non riporta xxxxx, come ha scritto nel primo messaggio la variabile incriminata è num_soc

Re: Python: global name 'xxxxx' is not defined

Inviato: giovedì 1 maggio 2014, 21:00
da raffaele63
L'errore mi vieni dato sia per num_soc che per gen_numerazione. In entrambi i casi risulta non definito il nome globale. Qualcuno può indirizzarmi su come affrontare il problemino?

Re: [Risolto] (da solo)Python: global name 'xxx' is not defi

Inviato: sabato 3 maggio 2014, 15:00
da raffaele63
Ho fatto così:
dalla funzione scelta_C(), ho spostato la variabile n_sett nella funzione gen_numerazione().

Codice: Seleziona tutto

def gen_numerazione():
    n_sett=input("Quanti settori? ")
    foo = range(1,n_sett+1)
    random.shuffle(foo)
    print "\t\t",",".join([str(i)for i in foo])

def scelta_C():
    gara=raw_input("Tipologia gara: ")
    tipo=raw_input("Evento sportivo: ")
    soci=raw_input("Tesserato: ")
    gen_numerazione()
Così facendo non mi riporta più il name error e mi continua nel programmino.
Per quanto riguarda l'altro errore, ho fatto in modo che i numeri casuali mi vengano messi a video prima della variabile t_soc. Al momento mi va bene così, grazie a tutti per l'attenzione.