Foros del Web » Programando para Internet » Python »

IndexError: list index out of range

Estas en el tema de IndexError: list index out of range en el foro de Python en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Python: Ver original # Aqui es donde tengo todos los Modulos.   def bienvenidos ( ) :     print "Binevenidos a ...
  #1 (permalink)  
Antiguo 23/02/2013, 01:40
Avatar de cufu8583  
Fecha de Ingreso: enero-2013
Ubicación: North Miami Beach
Mensajes: 24
Antigüedad: 11 años, 10 meses
Puntos: 1
IndexError: list index out of range

Código Python:
Ver original
  1. # Aqui es donde tengo todos los Modulos.
  2.  
  3. def bienvenidos():
  4.    print "Binevenidos a Agenda Telefonica"
  5.    print "Elige una opcion:"
  6.    print "1- Anadir un registro a la Agenda: "
  7.    print "2- Listar el contenido de la Agenda: "
  8.    print "3- Buscar por nombre: "
  9.  
  10. def escribir():
  11.    print "Has seleccionado Anadir un Registro a la Agenda."  
  12.    nombre = raw_input("Ingrese el nombre del contacto: ")
  13.    telefono = raw_input("Ingrese el numero de telefono del contacto: ")
  14.    
  15.    agenda = open("agendatelefonica.csv")
  16.    for n in range(1,40):
  17.       linea = agenda.readline()
  18.       lineapartida = linea.split(',')
  19. ##      print lineapartida[0]
  20.      
  21.       if lineapartida[0] != "":
  22.          memoria = lineapartida[0]
  23. ##   print "El ultimo numero es: ",memoria        
  24.    agenda.close()
  25.  
  26.    memonum = int(memoria)
  27.    posicion = 0
  28.    posicion = memonum + 1  
  29.    postr = str(posicion)
  30.    print "El nombre del contacto es: ",nombre,"y su numero de telefono es: ",telefono
  31.    agenda = open("agendatelefonica.csv",'a')
  32.    agenda.write(postr)
  33.    agenda.write(',')
  34.    agenda.write(nombre)
  35.    agenda.write(',')
  36.    agenda.write(telefono)
  37.    agenda.write("\n")
  38.    agenda.close()
  39.  
  40. def listar(fin):
  41.    print "Has seleccionado Listar el contenido de la Agenda."
  42.    agenda = open("agendatelefonica.csv")
  43.    numero = 0
  44.    for i in range(1,fin):
  45.       lectura = agenda.readline()
  46.       print lectura.replace(',',"\t\t")
  47.       numero = numero + 1      
  48.    print "Ya he terminado de leer la agenda"
  49.    agenda.close()
  50.  
  51. def mierror():
  52.    print "Esa opcion es invalida."
  53.  
  54. def buscador(nombrebuscado):
  55.     print "Aqui buscare las coincidencias: "
  56.     agenda = open("agendatelefonica.csv")
  57.     for i in range(1,30):
  58.        i = agenda.readline()
  59.        partido = i.split(',')
  60.        if nombrebuscado == partido[1]:
  61.           print partido[2]          
  62.     agenda.close()

Estoy siguiendo un curso de python y estamos creando una agenda, pero me sale este error:



if nombrebuscado == partido[1]:
IndexError: list index out of range

El problema es que los cursos son en python 3 y yo uso el python 2.7, ya le he modificado muchas cosas de python 3 para que funcione en python 2.7.

# y este es el principal programa de donde lo corrro:

Código Python:
Ver original
  1. import modulo
  2.  
  3. def principal():
  4.    modulo.bienvenidos()
  5.  
  6.    opcion = input("> ")
  7.  
  8.    print "Has seleccionado la opcion: ",opcion
  9.  
  10.    if opcion == 1:
  11.       modulo.escribir()
  12.       principal()
  13.    elif opcion == 2:
  14.       print "Selecciona cuantos registros quieres ver: "
  15.       registros = raw_input("> ")
  16.       registrosnumero = int(registros)
  17.       modulo.listar((registrosnumero+1))
  18.       principal()
  19.    elif opcion == 3:      
  20.       print "Dime el nombre de la persona que estas buscando: "
  21.       nombrebuscado = raw_input('> ')
  22.       modulo.buscador(nombrebuscado)
  23.       principal()
  24.      
  25.    else:
  26.       modulo.mierror()
  27.       principal()
  28.  
  29. principal()
  #2 (permalink)  
Antiguo 23/02/2013, 10:31
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: IndexError: list index out of range

Checa tu archivo agendatelefonica.csv probablemente solamente tengas una columna. Cuando estas esperando al menos 3. Otra cosa recuerda que los indices empiezan del 0 y no del 1.
  #3 (permalink)  
Antiguo 23/02/2013, 13:13
Avatar de cufu8583  
Fecha de Ingreso: enero-2013
Ubicación: North Miami Beach
Mensajes: 24
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: IndexError: list index out of range

razpeitia ya lo revise y tengo las 3 columnas esta asi:

1,luis,78595658

donde 1 seria el indice 0, luis seria indice 1 y 78595658 seria el indice 2.

y es lo que yo quiero donde llame al indice 1 que seria el nombre partido[1] y como resultado de el telefono indice 2 partido[2]. ya probe de varias formas y nada de nada.
  #4 (permalink)  
Antiguo 23/02/2013, 16:11
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: IndexError: list index out of range

Estas dejando una linea en blanco al final, ademas siempre intentas leer 29 registros, cosa que no siempre va a ver.

¿Que es lo que esta pasando?
Código Python:
Ver original
  1. Lees una linea
  2. i = agenda.readline() # Fin de archivo o linea en blanco
  3. partido = i.split(',') # Solamente esto retorna [""]
  4. if nombrebuscado == partido[1]: # Aqui obviamente falla

Lo que puedes hacer validar varias cosas.
1.- Si es fin de archivo
2.- Si es una linea en blanco ignorarla
3.- Checar que efectivamente tengas el numero de campos que requieres ejemplo: len(partido) == 3
  #5 (permalink)  
Antiguo 21/03/2013, 05:26
 
Fecha de Ingreso: julio-2012
Ubicación: bucaramanga
Mensajes: 19
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: IndexError: list index out of range

hola a todos, bueno pues yo estoy tomando el mismo curso y se me presento el mismo error, revise minuciosamente el código tal cual como lo describen en el video del curso y no encontre error, por lo que lo aplique para un archivo nuevo pero con extension txt el cual cree manualmente fijandome separar las columnas por comas algo asi:

1,alvaro,4444
2,alejandra,345
3,juan,22222

y funcionó normalmente luego se me ocurrió revisar el archivo agendatelefonica.csv con el block de notas y las columnas aparecían separadas por punto y coma luego ahi estaba el error, asi que en el código en la parte del slpit lo habilite ya no para coma sino para punto y coma de la siguiente manera y funcionó correctamente

partido=lectura.split(';')

supongo que al abrir y guardar el archivo con microsoft excel pueda sufrir estos cambios de las comas por punto y coma. saludos

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:33.