通讯录的代码如下:
class People:
name=''
number=0
n=0
def say(self):
print('{}\n\t名字:{}\n\t电话号码:{}'.format(self.n+1,self.name,self.number))
def revise(self):
number=input('请输入号码:')
p=People()
list=[]
def view():
for i in list:
i.say()
def add():
list.append(People())
print('现在一共有{}个联系人'.format(len(list)-1))
edit(len(list)-1)
def edit(a,b=1):
ct=0
if(b==2):
print('''\t1.名字:{}\n\t2.电话号码:{}'''.format(list[a].name, list[a].number))
ct=int(input('请问你要修改什么?请输入对应的序号'))
list[a].n=a
if(b==1 or ct==1):
list[a].name=input('请输入名字:')
if(b==1 or ct==2):
list[a].number=input('请输入电话号码:')
if(b==1):
print('已成功添加!')
else:
print('已成功修改!')
list[a].say()
def revise():
view()
a=int(input('请输入你要修改的联系人的序号'))-1
edit(a,2)
for i in range(1,10):
print('''你可以输入下面的序号以执行对应的操作:
1.查看所有联系人
2.增加联系人
3.修改联系人
4.查找联系人''')
a=int(input())
if a==1:
view()
if a==2:
add()
if a==3:
revise()
反思如下:
在python里,类也属于对象,如果要类实例化则应在后面加()
往list里加一类元素时,应该list.append(P())
class P:
name=''
p=P()
list=[]
list.append(p)
list[0].name='hhh'
list.append(p)
list[1].name='haha'
print(list[0].name)
print(list[1].name)
像上面这样,因为append(p)加进去的是对象p,所以虽然list的下标不同,但是修改的是同一个p,所以最后的输出结果是"haha"。
正确的做法应该是list append(P())
class P:
name=''
p=P()
list=[]
list.append(P())
list[0].name='hhh'
list.append(P())
list[1].name='hahahha'
print(list[0].name)
print(list[1].name)