zoukankan      html  css  js  c++  java
  • day013作业

    作业:

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

    ANSR:

    444  # 在全局运行自定义函数,函数内部有input,直接输出变量值
    333  # 打印全局的input变量值
    

    题目一图片:

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

    ANSR:

    111  # 调用函数func,局部空间无变量x,去全局寻找。
    

    题目二图片:

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

    ANSR:

    1  # 调用函数foo,foo执行时,在局部空间内调用全局自定义函数func,func内需要参数x,在全局空间找到x。
    

    题目三图片:

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

    ANSR:

    222  # 调用函数f1,需要执行f1的局部函数f2,f2在f1内找到变量input
    

    题目四图片:

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

    ANSR:

    报错:  # 调用函数func,func局部空间执行print(x),func在定义的时候,确定了内部的x是局部变量,但执行到print的时候,x还没在局部空间定义,所以报错。
    

    题目五图片:

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

    ANSR:

    111  # 调用函数,局部空间找不到变量,去全局寻找
    111  # 调用函数,局部空间找不到变量,去全局寻找
    

    题目六图片:

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

    ANSR:

    3  # 调用func2,func2内部调用func1,func1需要变量x,全局空间找到变量x=3(1,2已经与变量名x解除绑定)
    

    题目七图片:

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

    ANSR:

    # 1 
    def login():
        inp_name = input("Please input your user name:  ").strip()
        inp_pwd = input("Please input your user password:  ").strip()
        with open("db.txt", mode="rt", encoding="utf-8") as read_f:
            for line in read_f:
                name, pwd, *_ = line.strip("
    ").split(":")
                if name == inp_name and inp_pwd == pwd:
                    print("login successful")
                    global login_user
                    login_user == inp_name
                    break
            else:
                print("Username or password error")
                
                
    # 2 
    def balance():
        """查询余额功能:输入账号查询余额"""
        if login_user:
            with open("db.txt", mode="rt", encoding="utf-8") as read_f:
                for line in read_f:
                    if login_user in line:
                        name, pwd, *_,balance = line.strip().split(":")
                        print(name,pwd,balance)
                    break
        else:
            print("用户没登录,请先登录")
            login()
    
  • 相关阅读:
    vue 开发系列 企业微信整合
    MongoDB基础3
    MongoDB基础2
    MongoDB基础1
    SpringBoot MongoDB
    UWSGI
    Nginx
    编译python源码
    Flask部署
    Django个人工作总结
  • 原文地址:https://www.cnblogs.com/huluhuluwa/p/13154823.html
Copyright © 2011-2022 走看看