zoukankan      html  css  js  c++  java
  • day15---作业

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

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

    因为有全局变量input=333,所以print(input)的结果为333

    2

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

    局部命名空间没有x-->到全局命名空间x=111,所以print(x)--->111

    3

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

    foo()函数调用-->将x=222放进foo()的局部命名空间,func()函数调用--> func()局部命名空间没有x-->全局命名空间x=1,所以打印结果为1

    4

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

    f1()函数调用-->x=222放入f1()局部命名空间-->f2()函数调用,f2()局部命名空间没有找到input,到f1()局部命名空间找,input=222-->打印结果为222

    5

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

    在func()调用阶段,执行到print(x),因为在func()内有x=222,所以解释器会认为print(x)打印的是局部名称空间中的x,但是因为x在print之后,所以会报错未定义,就引用

    6

    # ===================题目六===================
    x=111
    
    def foo():
        print(x,)
    
    def bar():
        print(x)
    
    foo()
    bar()

    首先调用foo(),foo()函数里没有x的定义-->全局命名空间x=111,打印结果为111;

    然后调用bar(),bar()函数里没有x 的定义-->全局命名空间x=111,打印结果为111。

    7

    # ===================题目七===================
    x=1
    def func2():
        func1()
    
    x=2
    def func1():
        print(x)
    
    x=3
    
    func2()

    调用 func2()-->调用func1()-->func1()局部命名空间找不到x-->全局命名空间,到调用func1()处上层的全局命名空间找,打印结果为x=3

    8

    # ===================题目八===================
    1、如下全局变量记录了当前登录用户,编写登录功能,一旦用户登录成功,则将全局变量赋值为当前登录的用户名
    login_user=None
    user_name="egon"
    user_pwd="123"
    login_user=None
    def use_auth(inp_name,inp_pwd):
    
        if inp_name == user_name and inp_pwd == user_pwd:
            print("登录成功")
            global  login_user
            login_user=inp_name
    
    use_auth("egon","123")
    print(login_user)

    9

    针对之前编写的查询余额的功能,添加额外的逻辑:如果用户没有登录,则先执行登录功能
    login_user=None
    def show_money():
        """显示余额"""
        global login_user
        if not login_user:
            login()
    
        with open("db.txt", "r", encoding="utf-8") as f1:
            for line in f1:
                name, pwd, mon = line.strip("
    ").split(":")
                if login_user in line:
                    print("{}用户账户余额为{}".format(login_user, mon))
                    # return mon
    
    def login():
        """用户登录验证"""
        userame=input("请输入用户名>>").strip()
        passwd=input("请输入密码>>").strip()
        with open("db.txt", "r", encoding="utf-8") as f1:
            for line in f1:
                name, pwd, money = line.strip("
    ").split(":")
                if username == name and passwd == pwd:
                    print("用户{}登录成功。".format(username))
                    global login_user
                    login_user=username
                    break
            else:
                print("用户名或密码错误。")
    
    show_money()
  • 相关阅读:
    HDU 1102 Constructing Roads
    HDU 1285 确定比赛名次。
    最小生成树 HDU 各种畅通工程的题,prim和kru的模板题
    HDU Jungle Roads 1301 最小生成树、
    并查集小结(转)
    HDU hdu 2094 产生冠军 拓扑排序 判定环
    模运算(转)
    拓扑排序(主要是确定环和加法) HDU 2647 Reward
    HDU 1372 Knight Moves 简单BFS
    用计算机模型浅析人与人之间沟通方式 (一)如何谈话
  • 原文地址:https://www.cnblogs.com/surpass123/p/12529388.html
Copyright © 2011-2022 走看看