第25讲 字典(关于局部变量的问题)
本帖最后由 咖啡的旅游记 于 2018-3-28 11:58 编辑方法中有形参的时候报错如下:
===================================================================
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\1.py", line 49, in <module>
SelectML()
File "C:\Users\Administrator\Desktop\1.py", line 15, in SelectML
InsertML(name,phonenumber)
UnboundLocalError: local variable 'name' referenced before assignment
====================================================================
把形参全部去掉后,是不报错的,能完成题目的要求。请老师帮忙看下,为什么加上形参后 就一直提示错误呢?
另外如果直接上去 输入 1 的话 报如上错误。但是先 2 插入信息后,再 1 就不报错了。
====================================================================
print('|---欢迎进入通讯录程序---|')
print('|--- 1:查询联系人资料 ---|')
print('|--- 2:插入新的联系人 ---|')
print('|--- 3:删除已有联系人 ---|')
print('|--- 4:退出通讯录程序 ---|')
'''0定义通讯录字典'''
Maillist={}
name=""
phonenumber=""
n=0
'''1定义查询方法'''
def SelectML():
if len(Maillist)<=0:
print("~~通讯录没有任何信息!!")
InsertML(name,phonenumber)
else:
name=input("请输入您要查询联系人的姓名:")
print('-->',name,'的电话号是',Maillist)
'''2定义插入方法'''
def InsertML(name,phonenumber):
name=input("请输入要插入的姓名:")
if name in Maillist:
print("您输入的姓名在通讯录中存在")
updateML=input("是否修改用户资料(YES/NO):")
if updateML=='YES':
phonenum=input("请输入需要添加联系人的电话:")
Maillist=phonenumber
else:
phonenumber=input("请输入需要添加联系人的电话:")
Maillist=phonenumber
'''3定义删除方案'''
def DeleteML():
Maillist.clear()
print("****通讯录已经清空****")
'''4定义退出方法'''
def ExitML():
print("|--- 感谢您使用通讯录程序 ---|")
'''逻辑主体'''
while True:
n=input("请输入相关的指令代码:")
if n.isdigit():
num=int(n)
if 5>num>=1:
if num==1:
SelectML()
elif num==2:
InsertML(name,phonenumber)
elif num==3:
DeleteML()
elif num==4:
ExitML()
break
else:
print("…您输入了错误的指令代码!!")
else:
print("…您输入了错误的指令代码!!")
print('',end='\n\n') 使用全局变量要在函数中声明global phonenum=input("请输入需要添加联系人的电话:")
Maillist=phonenumber
这里写错了 学习一下 {:10_285:}
页:
[1]