2015-09-10 16 views
5

Sto realizzando un programma su python che deve contenere alcune informazioni sugli elenchi e su di essi eseguono operazioni matematiche. Ecco un esempio del mio codice:Come operare sugli elementi di un elenco?

VCentral = [] 
Atlantico=[] 
Pacifico=[] 
Norte=[] 
Sur=[] 
LVC=0 
LA=0 
LP=0 
LN=0 
LS=0 
LTotal=0 

def RegTemp(regcode): 
    global LVC 
    global LA 
    global LP 
    global LN 
    global LS 
    global LTotal 
    registro=[] 
    temp = int(input("Digite la temperatura: ")) 
    fecha=input("Digite la fecha: ") 
    registro.extend((temp,fecha)) 
    if regcode==1: 
     VCentral.extend(registro) 
     LVC+=1 
     LTotal+=1 
    if regcode==2: 
     Atlantico.extend(registro) 
     LA+=1 
     LTotal+=1 
    if regcode==3: 
     Pacifico.extend(registro) 
     LP+=1 
     LTotal+=1 
    if regcode==4: 
     Norte.extend(registro) 
     LN+=1 
     LTotal+=1 
    if regcode==5: 
     Sur.extend(registro) 
     LS+=1 
     LTotal+=1 

E quindi ho bisogno di confrontare i suoi valori con qualcos'altro. ecco un altro esempio di funzione che sto cercando di implementare:

def Mayor(regcode): 
    if regcode==1: 
     may=0 
     for i in VCentral: 
      if i[0]>may: 
       may=i[0] 
     return may 
    if regcode==2: 
     may=0 
     for i in Atlantico: 
      if i[0]>may: 
       may=i[0] 
     return may 
    if regcode==3: 
     may=0 
     for i in Pacifico: 
      if i[0]>may: 
       may=i[0] 
     return may 
    if regcode==4: 
     may=0 
     for i in Norte: 
      if i[0]>may: 
       may=i[0] 
     return may 
    if regcode==5: 
     may=0 
     for i in Sur: 
      if i[0]>may: 
       may=i[0] 
     return may 

Se mi si potrebbe dire il motivo per cui genera un errore mi sarei grato.

EDIT:

Traceback (most recent call last): 
    File "D:/tarea2.py", line 212, in <module> 
    Menu() 
    File "D:/tarea2.py", line 199, in Menu 
    print(EstadisticaZona(regcode)) 
    File "D:/tarea2.py", line 165, in EstadisticaZona 
    print("Temperatura mayor: ",Mayor(2)) 
    File "D:/tarea2.py", line 102, in Mayor 
    if i[0]>may: 
TypeError: 'int' object is not subscriptable 
+0

errore di scrittura ti rende in grado di ottenere una risposta migliore – DreadfulWeather

+0

Che errore si lancia? Dovresti usare elif se hai più se. – GiannisIordanou

+0

Ho aggiunto l'errore –

risposta

1

Il problema è che si sta utilizzando array.extend() quando vuoi array.append(). .extend prende un iterabile e ne decomprime il contenuto e lo aggiunge alla fine dell'elenco. .append prende un valore e lo aggiunge alla fine dell'elenco senza decomprimere il suo contenuto. Poiché si desidera aggiungere una tupla ((temp,fecha)) all'elenco (e non ogni elemento della tupla), è necessario utilizzare array.append().

EDIT

Detto questo, ci sono un sacco di posti per il miglioramento nel codice. Ho semplificato tutto il codice che hai postato un po 'e l'ho ridotto a 7 righe. (Dovrebbe funzionare lo stesso come il tuo codice, ma nessuna promessa come non ho visto tutto il tuo programma.):

oceans = [[], [], [], [], []] 

def RegTemp(regcode): 
    temp = int(input("Digite la temperatura: ")) 
    fecha = input("Digite la fecha: ") 
    oceans[regcode-1].append((temp,fecha)) 

def Mayor(regcode): 
    return max(i[0] for i in oceans[regcode-1]) 

Buona fortuna e felice di codifica!

0

Il problema è l'uso improprio della funzione di estensione. Quindi quando fai i [0] nella seconda funzione, sarà un errore, dal momento che non è una lista ma un numero.

Controllare la funzione di aggiunta ed estensione.

Problemi correlati