由於我最近對信息安全和網絡編程感興趣,因此我決定通過Internet學習Python。我正在嘗試編寫一段代碼,它允許用戶存儲所需數量的人員的Biodata(姓名,年齡和工作)。然後O/P將包括所有這些人的生物數據以及人數。作爲Python新手,我無法識別錯誤。 謝謝 - 希德IndexError:列表分配索引超出範圍(in __init__)
這裏是我的代碼:
#!/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*
代碼有很多問題。您應該閱讀[Python教程](http://docs.python.org/tutorial/)以熟悉Python的基礎知識。 – BrenBarn
對此使用列表並沒有什麼好的理由。如果您對另一個數據結構有一些絕望的需求,那麼Plain屬性或者'dict'會更合適。還要注意'count'和'myBio'是*類變量*,而不是*實例變量*,這可能不是你想要的。這意味着它們對於所有實例都是相同的。用'__init __()'代替它們。 –
您知道,當您在提問時鍵入標題時,您會看到類似問題的列表。在這種情況下,您的確切錯誤的問題列表是*長*,閱讀*任何*這些問題將回答你的問題,並且也更快。下次嘗試。 –