2015-09-10 7 views
5

Ich mache ein Programm auf Python, das einige Informationen auf Listen halten muss und sie mathematische Operationen auf ihnen ausführen. Hier ist ein Beispiel meines Codes:Wie wird an Elementen in einer Liste gearbeitet?

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 

Und dann muss ich seine Werte mit etwas anderem vergleichen. hier ist eine andere Probe der Funktion zu implementieren Ich versuche:

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 

Wenn Sie mich könnte sagen, warum es einen Fehler bei mir wirft ich es schätzen würde.

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

Schreibfehler macht Sie besser Antwort – DreadfulWeather

+0

Welchen Fehler wirft? Du solltest elif verwenden, wenn du mehrere if hast. – GiannisIordanou

+0

Ich habe den Fehler hinzugefügt –

Antwort

1

Das Problem ist, dass Sie array.extend() verwenden, wenn Sie array.append() wollen. .extend nimmt eine iterable und entpackt ihren Inhalt und fügt das am Ende der Liste hinzu. .append nimmt einen Wert und fügt ihn am Ende der Liste hinzu, ohne den Inhalt zu entpacken. Da Sie der Liste ein Tupel ((temp,fecha)) hinzufügen möchten (und nicht jedes Element im Tupel), sollten Sie array.append() verwenden.

EDIT

, dass alle gesagt gibt es in Ihrem Code eine Menge Orte für Verbesserungen. Ich habe den gesamten Code, den Sie gepostet haben, etwas vereinfacht und auf 7 Zeilen reduziert. (Es sollte die gleiche wie Ihr Code arbeiten, aber keine Versprechungen, wie ich nicht dein ganzes Programm zu sehen.):

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]) 

Viel Glück und glücklich Codierung!

0

Das Problem ist, dass Sie die Extend-Funktion missbrauchen. Wenn Sie also in der zweiten Funktion i [0] machen, ist das ein Fehler, da es sich nicht um eine Liste, sondern um eine Zahl handelt.

Sie sollten die Funktion append und extend prüfen.