Programación Web y Scripting > Python
IndexError: list index out of range
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
[#] Página Siguiente
Ir a la versión completa