• Domingo 5 de Abril de 2020, 18:05

Autor Tema:  IndexError: list index out of range  (Leído 2739 veces)

cufu8583

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
IndexError: list index out of range
« en: Sábado 23 de Febrero de 2013, 22:30 »
0
Código: Python
  1. Código Python:
  2.  
  3. # Aqui es donde tengo todos los Modulos.
  4.  
  5. def bienvenidos():
  6.    print "Binevenidos a Agenda Telefonica"
  7.    print "Elige una opcion:"
  8.    print "1- Anadir un registro a la Agenda: "
  9.    print "2- Listar el contenido de la Agenda: "
  10.    print "3- Buscar por nombre: "
  11.  
  12. def escribir():
  13.    print "Has seleccionado Anadir un Registro a la Agenda."  
  14.    nombre = raw_input("Ingrese el nombre del contacto: ")
  15.    telefono = raw_input("Ingrese el numero de telefono del contacto: ")
  16.    
  17.    agenda = open("agendatelefonica.csv")
  18.    for n in range(1,40):
  19.       linea = agenda.readline()
  20.       lineapartida = linea.split(',')
  21. ##      print lineapartida[0]
  22.      
  23.       if lineapartida[0] != "":
  24.          memoria = lineapartida[0]
  25. ##   print "El ultimo numero es: ",memoria        
  26.    agenda.close()
  27.  
  28.    memonum = int(memoria)
  29.    posicion = 0
  30.    posicion = memonum + 1  
  31.    postr = str(posicion)
  32.    print "El nombre del contacto es: ",nombre,"y su numero de telefono es: ",telefono
  33.    agenda = open("agendatelefonica.csv",'a')
  34.    agenda.write(postr)
  35.    agenda.write(',')
  36.    agenda.write(nombre)
  37.    agenda.write(',')
  38.    agenda.write(telefono)
  39.    agenda.write("\n")
  40.    agenda.close()
  41.  
  42. def listar(fin):
  43.    print "Has seleccionado Listar el contenido de la Agenda."
  44.    agenda = open("agendatelefonica.csv")
  45.    numero = 0
  46.    for i in range(1,fin):
  47.       lectura = agenda.readline()
  48.       print lectura.replace(',',"\t\t")
  49.       numero = numero + 1      
  50.    print "Ya he terminado de leer la agenda"
  51.    agenda.close()
  52.  
  53. def mierror():
  54.    print "Esa opcion es invalida."
  55.  
  56. def buscador(nombrebuscado):
  57.     print "Aqui buscare las coincidencias: "
  58.     agenda = open("agendatelefonica.csv")
  59.     for i in range(1,30):
  60.        i = agenda.readline()
  61.        partido = i.split(',')
  62.        if nombrebuscado == partido[1]:
  63.           print partido[2]          
  64.     agenda.close()
  65.  
  66.  
  67. ########################################Aqui esta el principal programa desde donde corro el modulo.py########
  68. # y este es el principal programa de donde lo corrro:
  69.  
  70. Código Python:
  71.  
  72. import modulo
  73.  
  74. def principal():
  75.    modulo.bienvenidos()
  76.  
  77.    opcion = input("> ")
  78.  
  79.    print "Has seleccionado la opcion: ",opcion
  80.  
  81.    if opcion == 1:
  82.       modulo.escribir()
  83.       principal()
  84.    elif opcion == 2:
  85.       print "Selecciona cuantos registros quieres ver: "
  86.       registros = raw_input("> ")
  87.       registrosnumero = int(registros)
  88.       modulo.listar((registrosnumero+1))
  89.       principal()
  90.    elif opcion == 3:      
  91.       print "Dime el nombre de la persona que estas buscando: "
  92.       nombrebuscado = raw_input('> ')
  93.       modulo.buscador(nombrebuscado)
  94.       principal()
  95.      
  96.    else:
  97.       modulo.mierror()
  98.       principal()
  99.  
  100. principal()
  101.  
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

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re:IndexError: list index out of range
« Respuesta #1 en: Lunes 25 de Febrero de 2013, 15:34 »
0
Hola, bienvenido al foro.

Los índices empiezan por 0 y no 1
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

leosansan

  • Nuevo Miembro
  • *
  • Mensajes: 8
  • Nacionalidad: es
    • Ver Perfil
Re:IndexError: list index out of range
« Respuesta #2 en: Viernes 1 de Marzo de 2013, 17:21 »
0
[
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.

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: [Seleccionar]
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()

Saluditos!. ...
« última modificación: Viernes 1 de Marzo de 2013, 20:31 por leosansan »

cufu8583

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re:IndexError: list index out of range
« Respuesta #3 en: Sábado 2 de Marzo de 2013, 20:45 »
0
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

  • Miembro activo
  • **
  • Mensajes: 49
  • Nacionalidad: es
    • Ver Perfil
Re:IndexError: list index out of range
« Respuesta #4 en: Domingo 3 de Marzo de 2013, 03:00 »
0
Por cierto los indices de range pueden empezar por 1 o por cualquier otro numero, simplemente indicando el principio y el final.

leosansan

  • Nuevo Miembro
  • *
  • Mensajes: 8
  • Nacionalidad: es
    • Ver Perfil
Re:IndexError: list index out of range
« Respuesta #5 en: Domingo 3 de Marzo de 2013, 16:56 »
0
Por cierto los indices de range pueden empezar por 1 o por cualquier otro numero, simplemente indicando el principio y el final.

Los de range sí, pero no me cabe duda que arielb se refería al índice de inicio de una cadena.

Saluditos!. ...

cufu8583

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re:IndexError: list index out of range
« Respuesta #6 en: Domingo 3 de Marzo de 2013, 23:01 »
0
Me estan dando muchas dificultades lo de los indices jajajajajaja,  :fire: