JackyJi 发表于 2020-6-18 17:04:39

026讲课后作业问题

为什么创建空字典的语句要放在login函数外面,如果放在里面的话会报错执行Nn()或Ee()函数的时候显示user_data这个字典未定义
def Nn(name):      
    if name in user_data:
      name=input('此用户名已存在,请重新输入:')
      Nn(name)
    else:
      password=input('请输入密码:')
      user_data=password
      print('注册成功,赶紧试试登录吧\n')

      
def Ee(name):   
    if name not in user_data:
      name=input('您输入的用户名不存在,请重新输入:')
      Ee(name)
    else:
      password=input('请输入密码:')
      if password==user_data:
            print('欢迎您进入系统\n')
      else:
            print('密码错误')
            name=input('请输入用户名:')
            Ee(name)

user_data={}#为什么创建空字典的语句要放在login函数外面,如果放在里面的话会报错执行Nn()或Ee()函数的时候显示user_data这个字典未定义,这是为什么呢?

def login():   
    while 1:
      print('''|--- 新建用户:N/n ---|
|--- 登录账户:E/e ---|
|--- 退出程序:Q/q ---|
|--- 请输入指令代码:''',end='')
      
      judge=input()
      
      if judge=='N' or judge=='n':               
            name=input('请输入用户名:')
            Nn(name)

      elif judge=='E' or judge=='e':         
            name=input('请输入用户名:')
            Ee(name)
      
      elif judge=='Q' or judge=='q':
            break

      else:
            print('您输入的代码有误,请重新输入')
            continue

Twilight6 发表于 2020-6-18 17:06:28



user_data={}#为什么创建空字典的语句要放在login函数外面,如果放在里面的话会报错执行Nn()或Ee()函数的时候显示user_data这个字典未定义,这是为什么呢?

放再外面就算全局作用域,就是全局变量

而放在函数内属于局部变量,只能在这个函数范围内使用

JackyJi 发表于 2020-6-19 16:04:02

Twilight6 发表于 2020-6-18 17:06
放再外面就算全局作用域,就是全局变量

而放在函数内属于局部变量,只能在这个函数范围内使用

虽然Ee()函数在login()函数里面调用,但Ee()不能找到login()函数的局部变量user_data,是这样的意思吗

Twilight6 发表于 2020-6-19 16:11:38

JackyJi 发表于 2020-6-19 16:04
虽然Ee()函数在login()函数里面调用,但Ee()不能找到login()函数的局部变量user_data,是这样的意思吗

对    所以要放再最外面的全局作用域
页: [1]
查看完整版本: 026讲课后作业问题