Programación Web y Scripting > Python

 IndexError: list index out of range

(1/2) > >>

cufu8583:

--- Código: Python ---Código Python: # Aqui es donde tengo todos los Modulos. def bienvenidos():   print "Binevenidos a Agenda Telefonica"   print "Elige una opcion:"   print "1- Anadir un registro a la Agenda: "   print "2- Listar el contenido de la Agenda: "   print "3- Buscar por nombre: " def escribir():   print "Has seleccionado Anadir un Registro a la Agenda."      nombre = raw_input("Ingrese el nombre del contacto: ")   telefono = raw_input("Ingrese el numero de telefono del contacto: ")      agenda = open("agendatelefonica.csv")   for n in range(1,40):      linea = agenda.readline()       lineapartida = linea.split(',')##      print lineapartida[0]            if lineapartida[0] != "":         memoria = lineapartida[0]##   print "El ultimo numero es: ",memoria            agenda.close()    memonum = int(memoria)   posicion = 0   posicion = memonum + 1      postr = str(posicion)   print "El nombre del contacto es: ",nombre,"y su numero de telefono es: ",telefono   agenda = open("agendatelefonica.csv",'a')   agenda.write(postr)   agenda.write(',')   agenda.write(nombre)   agenda.write(',')   agenda.write(telefono)   agenda.write("\n")   agenda.close() def listar(fin):   print "Has seleccionado Listar el contenido de la Agenda."   agenda = open("agendatelefonica.csv")   numero = 0   for i in range(1,fin):      lectura = agenda.readline()      print lectura.replace(',',"\t\t")      numero = numero + 1         print "Ya he terminado de leer la agenda"   agenda.close() def mierror():   print "Esa opcion es invalida." def buscador(nombrebuscado):    print "Aqui buscare las coincidencias: "    agenda = open("agendatelefonica.csv")    for i in range(1,30):       i = agenda.readline()       partido = i.split(',')       if nombrebuscado == partido[1]:          print partido[2]              agenda.close()  ########################################Aqui esta el principal programa desde donde corro el modulo.py######### y este es el principal programa de donde lo corrro: Código Python: import modulo def principal():   modulo.bienvenidos()    opcion = input("> ")    print "Has seleccionado la opcion: ",opcion    if opcion == 1:      modulo.escribir()      principal()   elif opcion == 2:      print "Selecciona cuantos registros quieres ver: "      registros = raw_input("> ")      registrosnumero = int(registros)      modulo.listar((registrosnumero+1))      principal()   elif opcion == 3:            print "Dime el nombre de la persona que estas buscando: "      nombrebuscado = raw_input('> ')      modulo.buscador(nombrebuscado)      principal()         else:      modulo.mierror()      principal() principal() 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.

Ya revise el archivo .csv 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.

arielb:
Hola, bienvenido al foro.

Los índices empiezan por 0 y no 1

leosansan:

--- Cita de: cufu8583 en Sábado 23 de Febrero de 2013, 22:30 ---[
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.

Ya revise el archivo .csv 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.

--- Fin de la cita ---

El problema lo tienes en "for i in range(1,30):" que debería ser "for i in range(numero_entradas):", donde numero_entradas serían el número de líneas del fichero.

Una variante es en la función "listar" usar, en Python 3.x:


--- Código: ---print ("Aqui buscare las coincidencias: ")
agenda = open("agenda.csv")
for i  in agenda:
    partido = i.split(',')
    print (partido)
    if nombrebuscado == partido [1]:
        print (partido [1])
        print (partido [2])
        break
        print
agenda.close()

--- Fin del código ---

Saluditos!. ...

cufu8583:
Gracias a los 2 por contestar, un poco tarde les di las gracias, estaba un poco ocupado, lo arregle porque el problema era en el archivo csv, que tenia 4 indices y no 3 como yo pensaba.

$francisco:
Por cierto los indices de range pueden empezar por 1 o por cualquier otro numero, simplemente indicando el principio y el final.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa