| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 咖啡的旅游记 于 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[name])    
 
'''2定义插入方法''' 
def InsertML(name,phonenumber): 
  name=input("请输入要插入的姓名:") 
  if name in Maillist: 
    print("您输入的姓名在通讯录中存在") 
    updateML=input("是否修改用户资料(YES/NO):") 
    if updateML=='YES': 
      phonenum=input("请输入需要添加联系人的电话:") 
      Maillist[name]=phonenumber 
  else: 
    phonenumber=input("请输入需要添加联系人的电话:") 
    Maillist[name]=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')
 |   
 
 
 
 |