Python 索引器错误:列表分配索引超出范围(在初始化中)
由于我最近对信息安全和网络编程感兴趣,我决定通过互联网学习Python。我正在尝试编写一段代码,允许用户存储所需人数的Biodataname、年龄和工作。然后O/P将包括所有这些人的生物数据以及人数。作为Python新手,我无法识别错误。 谢谢-希德 这是我的密码:Python 索引器错误:列表分配索引超出范围(在初始化中),python,python-2.7,Python,Python 2.7,由于我最近对信息安全和网络编程感兴趣,我决定通过互联网学习Python。我正在尝试编写一段代码,允许用户存储所需人数的Biodataname、年龄和工作。然后O/P将包括所有这些人的生物数据以及人数。作为Python新手,我无法识别错误。 谢谢-希德 这是我的密码: #!/usr/bin/python class Bio: counts = 0 myBio = [] def __init__(self, name, age, job
#!/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
这是我的订单跟踪:
./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*
可能您正在寻找的是:
def __init__(self, name, age, job):
Bio.myBio.append(name)
Bio.myBio.append(age)
Bio.myBio.append(job)
Bio.counts + 1
问题是创建类时,元素Bio.counts、Bio.counts+1和Bio.counts+2不存在;您必须使用append方法创建它们
注
您可能不需要Bio.counts变量。您可以将显示内容重写为
你可能还想想想为什么你要用生物而不是自我 这就是你想要的:
class Bio:
def __init__(self, name, age, job):
self.name = name
self.age = age
self.job = job
您的代码有许多问题。您应该阅读本书以熟悉Python的基础知识。使用列表并不是一个很好的理由。如果您迫切需要另一种数据结构,则使用普通属性或dict更合适。还要注意,counts和myBio是类变量,而不是实例变量,这可能不是您想要的。这意味着它们对于所有实例都是相同的。把它们放在uu init_uuu中。你知道,当你在提问时键入标题时,你会得到一个类似问题的列表。在这种情况下,带有您的确切错误的问题列表很长,阅读这些问题中的任何一个都可以回答您的问题,而且速度更快。下次再试试。@LennartRegebro你忘了提到他们也列在右边的“相关”下:@BurhanKhalid:当然,但那是在问题发布之后。上面的列表在你发布之前,很可能是Bio.myBio.append[name,age,job]@BurhanKhalid同意。OP可能想重新思考他们的数据结构。有什么理由否决投票吗?如果我没有回答这个问题,我可以更新。
class Bio:
def __init__(self, name, age, job):
self.name = name
self.age = age
self.job = job