我在那里做错了什么?尝试用列表填充列表时出现错误“索引超出范围”

时间:2019-02-07 14:44:37

标签: python

我想创建一个列表,里面有一个列表,带有for,并且索引超出范围

我尝试了empleados.append(),但它不起作用

def main():
    empleados=[]
    for i in range(1):
        empleados[i][0](input("Ingrese el Nombre: "))
        empleados[i][1](input("Ingrese el Apellido: "))
        empleados[i][2](int(input("Ingrese el Sueldo Base: ")))
        empleados[i][3](int(input("Ingrese el AFP 1 o 2: ")))
        empleados[i][4](datetime(int(input("Ingrese la Fecha de Ingreso(pulsa intro cada vez 2000 12 31): ")),int(input("/")),int(input("/"))))
        empleados[i][5](int(input("Ingrese la cantidad de hijos que tiene: ")))

2 个答案:

答案 0 :(得分:1)

欢迎来到!

empleados[0]上没有可插入新值的列表。我发现类似这样的内容更容易阅读:

def main():
    empleados=[]
    for i in range(1):
        empleado_nueva = []
        empleado_nueva.append(input("Ingrese el Nombre: "))
        empleado_nueva.append(input("Ingrese el Apellido: "))
        empleado_nueva.append(int(input("Ingrese el Sueldo Base: ")))
        empleado_nueva.append(int(input("Ingrese el AFP 1 o 2: ")))
        empleado_nueva.append(datetime(int(input("Ingrese la Fecha de Ingreso(pulsa intro cada vez 2000 12 31): ")),int(input("/")),int(input("/"))))
        empleado_nueva.append(int(input("Ingrese la cantidad de hijos que tiene: ")))
        empleados.append(empleado_nueva)
    return empleados

值得一提的是,您尝试使用的索引访问模式(empleados[i][0] = ...)仅在该索引已存在某些内容时才起作用,例如:

>>> x = []
>>> x[0] = 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range

>>> x = ['a', 'b', 'c']
>>> x[0] = 'd'
>>> x
['d', 'b', 'c']

所以添加附件可能是最好的方法。

答案 1 :(得分:0)

问题是您正在尝试将empleados [i]用作具有可插入的现有索引的列表,但目前还没有。

您需要将变量设置为单独的列表,然后附加它们。例如

def main():
    empleados=[]
    vars = [
        input("Ingrese el Nombre: "),
        input("Ingrese el Apellido: "),
        int(input("Ingrese el Sueldo Base: ")),
        int(input("Ingrese el AFP 1 o 2: ")),
        datetime(int(input("Ingrese la Fecha de Ingreso(pulsa intro cada vez 2000 12 31): ")),int(input("/")),int(input("/"))),
        int(input("Ingrese la cantidad de hijos que tiene: ")
    empleados.append(vars)