qq_37288921 2017-01-08 14:36 采纳率: 0%
浏览 918

萌新求助代码问题,求各位老司机指点迷津,感激不尽!!

题目要求如下:
尝试编写一个用户登陆程序(这次尝试将该功能封装成函数),程序实现如图:
图片说明

个人代码如下:

data = {}
def denglu():
    print('''\n
|--- 新建用户:N/n ---|
|--- 登陆账号:E/e ---|
|--- 退出程序:Q/q ---|''')
    order = input('|--- 请输入指令代码:')  
    if order == 'n' or order == 'N':
        name = input('请输入用户名:')
        flag1 = 1      #flag1用以判断输入的用户名是否存在,存在为1,不存在为0
        while flag1:
            if name in data:
                name = input('此用户名已经被使用,请重新输入:')
            else:
                flag1 = 0
        password = input('请输入密码:')
        data = [name, password]
        print('注册成功,赶紧试试登陆吧^_^')
        return denglu()
    elif order == 'e' or order == 'E':
        name = input('请输入用户名:')
        flag2 = 1      #flag2用以判断输入的用户名是否存在,不存在为1,存在为0
        while flag2:
            if name not in data:
                name = input('您输入的用户名不存在,请重新输入:')
            else:
                flag2 = 0
        password = input('请输入密码:')
        flag3 = 1
        while flag3:   #flag3用以判断输入的密码是否存在,不存在为1,存在为0
            if password != data[name]:
                password = input('密码错误,请重新输入:')
            else:
                flag3 = 0
        print('欢迎进入xxoo系统,请点右上角的x结束程序')
    else:
        print('欢迎使用XXX登陆程序!')
denglu()

运行程序,当输入指令为n(N)或者e(E),输入用户名之后,报错,提示为:
UnboundLocalError: local variable 'data' referenced before assignment
但是data字典是我在函数外面定义的全局变量,所以不太理解哪里有问题,希望有经验的小伙伴指出问题所在,感激不尽!!!!!!

  • 写回答

2条回答 默认 最新

  • oyljerry 2017-01-08 15:45
    关注

    因为你要修改全局变量,你需要在修改前的地方global data申明一下它是全局空间变量,不然就会被认为本地变量找不到定义。

    评论

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况