作业 3/19

作业要求:下述所有代码画图以及分析代码执行流程
1、以定义阶段为准,先画出名称空间的嵌套关系图
2、然后找到调用函数的位置,写出函数调用时代码的执行过程,涉及到名字的查找时,参照1中画好
的嵌套图,标明查找顺序,一层一层直到找到位置

 ===================题目一===================
input=333
def func():
    input=444
func()
print(input)

答:func() ——> def func(): 代码块 ——> 局部变量input = 444 ——> print(input) 全局变量 input = 333(打印333)

 ===================题目二===================
def func():
    print(x)
x=111

func()

答:func() ——> def func():代码块 ——> 全局变量:x =111 ——> print(x)

 ===================题目三===================
x=1
def func():
   print(x)


def foo():
    x=222
    func()

foo()

答:foo() ——> 局部变量x = 222 ,func() ——> 全局变量x = 1 ,print(x)

 ===================题目四===================
input=111
def f1():
    def f2():
        # input=333
        print(input)
    input=222
    f2()

f1()

答:f1() ——> f2() ——> e层:input = 222 ——> print(input)

 ===================题目五===================
x=111
def func():
    print(x)
    x=222

func()

答:报错,x = 222 被标记成局部变量,使用前没有被赋值

 ===================题目六===================
x=111

def foo():
    print(x,)

def bar():
    print(x)

foo()
bar()

答:foo() ——> 全局变量x = 111 ——> print(x) ——> bar() ——> x = 111 ——> print(x)

 ===================题目七===================
x=1
def func2():
    func1()

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

x=3

func2()

答:x =1 ——> x = 2 ——> x = 3 ——> func2() ——> func1() ——> print(x)

===================题目八===================
1、如下全局变量记录了当前登录用户,编写登录功能,一旦用户登录成功,则将全局变量赋值为当前登录的用户名
2、针对之前编写的查询余额的功能,添加额外的逻辑:如果用户没有登录,则先执行登录功能

def login():
    global login_user
    while not login_user:
        with open('users.txt','r',encoding = 'utf-8') as f:
            user = input('请输入入账号:').strip()
            pwd = input('请输入密码:').strip()
            for line in f:
                user1,pwd1 = line.strip().split(':')
                if user == user1:
                    if pwd == pwd1:
                        login_user = user
                        print('登陆成功')
                        return
                    else:
                        print('登陆失败')
                        break
            else:
                print('没有这个用户哦')


def look_at_it(user):
    while not login_user:
        login()
    with open('db.txt','r',encoding = 'utf-8') as f1:
        for line in f1:
            user1, money = line.strip().split(':')
            if user == user1:
                print('余额为:{}'.format(money))
                return
        else:
            print('没有这个用户哦')


login_user=None
login()
print(login_user)
look_at_it(login_user)

猜你喜欢

转载自www.cnblogs.com/pythonwl/p/12526457.html