IndexError:列表赋值索引超出范围(在__init__中)

时间:2013-05-21 04:58:39

标签: python python-2.7

由于我最近对信息安全和网络编程的兴趣,我决定通过互联网学习Python。我正在尝试编写一段代码,允许用户存储所需人数的Biodata(姓名,年龄和工作)。然后O / P将包括所有这些人的生物数据以及人数。作为Python的新手,我无法识别错误。 谢谢 - 希德

这是我的代码:

    #!/usr/bin/python
    class Bio:
        counts = 0
        myBio = []
        def __init__(self, name, age, job):
            Bio.myBio[Bio.counts] = name
            Bio.myBio[Bio.counts+1] = age
            Bio.myBio[Bio.counts+2] = job
            Bio.counts + 1
        def display(self):
            for myBio in range(0, Bio.counts):
                    print myBio
    while 1:
        name = raw_input("Enter your name: ")
        age = int(raw_input("Enter your age: "))
        job  = raw_input("Enter your Job: ")
        details = Bio(name, age, job)
        details.display()
        print "Detail Count %d" % Bio.myBio
        anymore = raw_input("Anymore details ?: (y/n)")
        if anymore == 'n':
            break

这是我的O / P的痕迹:

   ./bio.py
   Enter your name: Sid
   Enter your age: 21
   Enter your Job: InfoSec
   Traceback (most recent call last):
   File "./bio.py", line 25, in <module>
   details = Bio(name, age, job)
   File "./bio.py", line 9, in __init__
   Bio.myBio[Bio.counts] = name
   IndexError: list assignment index out of range*

2 个答案:

答案 0 :(得分:1)

这就是你想要的:

class Bio:

    def __init__(self, name, age, job):
        self.name = name
        self.age = age
        self.job = job

答案 1 :(得分:-1)

您所寻找的可能是:

def __init__(self, name, age, job):
    Bio.myBio.append(name)
    Bio.myBio.append(age)
    Bio.myBio.append(job)
    Bio.counts + 1

问题是,在创建类时,元素Bio.countsBio.counts+1Bio.counts+2不存在;你必须使用append方法创建它们。

注意

您可能不需要Bio.counts变量。您可以将display重写为

def display(self):
    for myBio in Bio.myBio:
        print myBio

您可能还想考虑使用Bio代替self的原因。