2015-09-10 13 views
5

Tôi đang tạo một chương trình trên trăn cần giữ một số thông tin trên danh sách và chúng thực thi các phép toán trên chúng. Đây là mẫu mã của tôi:Làm cách nào để vận hành trên các thành phần trong danh sách?

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 

Và sau đó tôi cần so sánh giá trị của nó với một giá trị khác. đây là một mẫu khác của hàm tôi đang cố gắng triển khai:

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 

Nếu bạn có thể cho tôi biết tại sao nó lại gây lỗi cho tôi, tôi sẽ đánh giá cao nó.

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

lỗi bằng văn bản giúp bạn có thể nhận được câu trả lời hay hơn – DreadfulWeather

+0

Lỗi gì sẽ xảy ra? Bạn nên sử dụng elif nếu bạn có nhiều nếu. – GiannisIordanou

+0

Tôi đã thêm lỗi –

Trả lời

1

Vấn đề là bạn đang sử dụng array.extend() khi bạn muốn array.append(). .extend mất một nội dung lặp lại và unpacks nội dung của nó và thêm rằng vào cuối danh sách. .append lấy một giá trị và thêm nó vào cuối danh sách mà không giải nén nội dung của nó. Vì bạn muốn thêm một tuple ((temp,fecha)) vào danh sách (và không phải từng mục trong bộ dữ liệu), bạn nên sử dụng array.append().

EDIT

Tất cả những gì đang được nói, có rất nhiều nơi để cải thiện trong mã của bạn. Tôi đã đơn giản hóa tất cả các mã mà bạn đăng khá nhiều và nhận được 7 dòng. (Nó sẽ hoạt động giống như mã của bạn, nhưng không hứa hẹn vì tôi chưa thấy toàn bộ chương trình của bạn.):

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

Chúc bạn may mắn và hạnh phúc!

0

Vấn đề là bạn sử dụng sai chức năng mở rộng. Vì vậy, khi bạn làm i [0] trong hàm thứ hai, nó sẽ là một lỗi, vì nó không phải là danh sách mà là một số.

Bạn nên kiểm tra chức năng nối thêm và mở rộng.

Các vấn đề liên quan