Practice questions

Practice questions:

一、下述所有代码画图以及分析代码执行流程

# 以定义阶段为准,先画出名称空间的嵌套关系图
# 然后找到调用函数的位置,写出函数调用时代码的执行过程,涉及到名字的查找时,参照1中画好的嵌套图,标明查找顺序,一层一层直到找到位置
# ===================题目一===================

input=333
def func():
    input=444
func()
print(input)

# 答案:333  先全局找到input=333
# ===================题目二===================

def func():
    print(x)
x=111

func()

# 答案:111    先局部没有,后全局找到x=111
# ===================题目三===================

x=1
def func():
   print(x)


def foo():
    x=222
    func()

foo()

# 答案:1      先func局部没有,再全局找到x=1
# ===================题目四===================

input=111
def f1():
    def f2():
        input=333
        print(input)
    input=222

    f2()

f1()

# 答案:333  先局部找到f2,f2中有input=333
# ===================题目五===================

x=111
def func():
    print(x) #
    x=222

func()

# 答案:报错  先在局部找到x=222,后运行先定义在调用,print在赋值前报错
# ===================题目六===================

x = 111

def foo():
    print(x, )

def bar():
    print(x)

foo()
bar()

# 答案:111  111   先局部没有,再全局x=111
# ===================题目七===================

x=1
def func2():
    func1()

x=2
def func1():
    print(x)

x=3

func2()

# 答案:3  先在局部找不到,再全局找,x=3覆盖了x=1和x=2
# ===================题目八===================
# 1、如下全局变量记录了当前登录用户,编写登录功能,一旦用户登录成功,则将全局变量赋值为当前登录的用户名
login_user=None
# 2、针对之前编写的查询余额的功能,添加额外的逻辑:如果用户没有登录,则先执行登录功能

# 1:

login_user = None
print('User:%s'%(login_user))
is_user = 'egon'
is_pwd = '123'


def login():
    inp_name = input('Username:').strip()
    inp_pwd = input('Password:').strip()
    if inp_name == is_user and inp_pwd == is_pwd:
        global login_user
        login_user = inp_name
        print('User:%s'%(login_user))
    else:
        print('No User')
login()



# 2:

login_user = None


def login():
    inp_name = input('Username:').strip()
    inp_pwd = input('Password:').strip()
    with open('user', 'rt', encoding='utf-8') as f:
        for item in f:
            users, pwds, balances = item.strip('\n').split('|')
            if inp_name == users and inp_pwd == pwds:
                print('Login Successful')
                global login_user
                login_user = inp_name
                break

        else:
            print('Login Error')


def check():
    if login_user == None:
        print('Plese log in to your account first !')
        login()
    else:
        with open('user', 'rt', encoding='utf-8') as f:
            for item in f:
                users, pwds, balances = item.strip().split('|')
                if login_user == users:
                    print('User:%s   Balance:%s' % (users, balances))


def quit():
        global login_user
        login_user = None


dict = {
    '1': [login, '登录'],
    '2': [check, '查询'],
    '3': [quit, '退出']

}

while True:
    print('Account:%s' % (login_user))
    for k in dict:
        print('%s  %s' % (k, dict[k][1]))
    choice = input('Cmd:').strip()
    if choice in dict:
        dict[choice][0]()
    else:
        print('指令不存在')

猜你喜欢

转载自blog.csdn.net/weixin_48283789/article/details/107473272