因此,我对编程还是比较陌生的,最近才开始学习Classes,我们应该制作一个可以在单独的文本文件中加载的电话簿。
但是,在进入for循环时,我会一直遇到本节中的问题。它撞上了砖墙
if storage[2] == permaStorage[i].number:
并告诉我“ IndexError:列表索引超出范围”。我几乎可以肯定这是由于permaStorage最初是空的,但是即使当我尝试用Phonebook的临时实例填充它时,它也会告诉我它超出范围。这样做的主要原因是要检查permaStorage中是否已经存在电话号码。
任何人都知道如何解决或解决此问题的好技巧?
(对不起,如果文字写得不好。刚加入这个网站,不确定风格)
class Phonebook():
def __init__(self):
self.name = ''
self.number = ''
def Add(name1, number1):
y = Phonebook()
y.name = name1
y.number = number1
return y
def Main():
permaStorage = []
while True:
print " add name number\n lookup name\n alias name newname\n change name number\n save filename\n load filename\n quit\n"
choices = raw_input ("What would you like to do?: ")
storage = choices.split(" ")
if storage[0] == "add":
for i in range(0, len(permaStorage)+1):
if storage[2] == permaStorage[i].number:
print "This number already exists. No two people can have the same phonenumber!\n"
break
if i == len(permaStorage):
print "hej"
try:
tempbox = Add(storage[1], storage[2])
permaStorage.append(tempbox)
except:
raw_input ("Remember to write name and phonenumber! Press any key to continue \n")
我认为问题在于permaStorage为空列表,然后您尝试执行以下操作:
for i in range(0, len(permaStorage)+1):
if storage[2] == permaStorage[i].number:
会导致错误,因为permaStorage有0个项目,但是您尝试获取第一个(i = 0,permaStorage [0])项目。
我认为您应该将第一个if子句替换为第一个if子句:
for i in range(0, len(permaStorage)+1):
if i == len(permaStorage):
print "hej"
try:
tempbox = Add(storage[1], storage[2])
permaStorage.append(tempbox)
if storage[2] == permaStorage[i].number:
print "This number already exists. No two people can have the same phonenumber!\n"
break
因此,在这种情况下,如果perStorage为空,则将附加一些值,然后下一个if子句就可以了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句