鱼C论坛

 找回密码
 立即注册
查看: 746|回复: 3

[已解决]026讲课后作业问题

[复制链接]
发表于 2020-6-18 17:04:39 | 显示全部楼层 |阅读模式

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

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

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

        
def Ee(name):   
    if name not in user_data:
        name=input('您输入的用户名不存在,请重新输入:')
        Ee(name)
    else:
        password=input('请输入密码:')
        if password==user_data[name]:
            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
最佳答案
2020-6-18 17:06:28


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


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

而放在函数内属于局部变量,只能在这个函数范围内使用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-18 17:06:28 | 显示全部楼层    本楼为最佳答案   


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


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

而放在函数内属于局部变量,只能在这个函数范围内使用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-19 16:04:02 | 显示全部楼层
Twilight6 发表于 2020-6-18 17:06
放再外面就算全局作用域,就是全局变量

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


虽然Ee()函数在login()函数里面调用,但Ee()不能找到login()函数的局部变量user_data,是这样的意思吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

对    所以要放再最外面的全局作用域
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 13:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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