【发布时间】:2018-03-24 00:16:10
【问题描述】:
所以我对编程比较陌生,最近才开始使用类,我们应该制作一个可以加载到单独文本文件中的电话簿。
然而,当我进入 for 循环时,我在本节中一直遇到问题。它撞到了一堵砖墙
if storage[2] == permaStorage[i].number:
并告诉我“IndexError: list index out of range”。我几乎可以肯定这是由于 permaStorage 一开始是空的,但即使我尝试用电话簿的临时实例填充它,它也会告诉我它超出了范围。它存在的主要原因是检查 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")
【问题讨论】:
-
为什么
len(permaStorage)+1在for i in range(0, len(permaStorage)+1):? -
我将其添加为具有等于 permaStorage 长度的定义范围。 +1 是为了让它首先开始,但很可能没有必要,以后会引起问题。
标签: python-2.7 list class for-loop