鱼C论坛

 找回密码
 立即注册
查看: 2431|回复: 4

[已解决]第25讲 字典(关于局部变量的问题)

[复制链接]
回帖奖励 2 鱼币 回复本帖可获得 2 鱼币奖励! 每人限 1 次(中奖概率 10%)
发表于 2018-3-28 00:28:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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')
最佳答案
2018-3-28 12:37:40
使用全局变量要在函数中声明global
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-28 12:37:40 | 显示全部楼层    本楼为最佳答案   
使用全局变量要在函数中声明global
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-28 12:38:30 | 显示全部楼层
phonenum=input("请输入需要添加联系人的电话:")
Maillist[name]=phonenumber
这里写错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-29 08:49:09 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-30 15:07:20 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-3 17:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表