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

    作业 11

    作业要求:下述所有代码画图以及分析代码执行流程

    1、以定义阶段为准,先画出名称空间的嵌套关系图

    2、然后找到调用函数的位置,写出函数调用时代码的执行过程,涉及到名字的查找时,参照1中画好的嵌套图,标明查找顺序,一层一层直到找到位置

    # ===================题目一===================
    input=333       # 将333的内存地址给全局变量input
    def func():     # 定义func()函数,需确定其中变量名关系
        input=444   # 定义局部变量
    func()          # 执行func()
    print(input)    # 找input--当前在全局,从全局开始找,有全局变量input333,输出
    
    # 333
    

    # ===================题目二===================
    def func():         # 定义func(),需确定其中变量名关系:
        print(x)        # 需要变量x,x按func()->全局->内置的顺序找
                        # func内不存在,全局内有,使用全局的x
    x=111               # 定义全局x的值:111
    func()              # 调用func,print(x),使用全局x,全局x已定义,输出111
    
    # 111
    

    # ===================题目三===================
    x=1                 # 定义全局x的值
    def func():         # 定义func(),需确定其中变量名关系: x
       print(x)         # 需要变量x,x按func()->全局->内置的顺序找
                        # func内不存在,全局内有,使用全局的x
    
    def foo():          # 定义foo(),需确定其中变量名关系: 无
        x=222           # 定义局部x的值
        func()          # 调用func()
    foo()
    # 1,定义局部x=222
    # 2,调用func()
    # 3,print(x),使用全局的x,全局x已定义,输出1
    
    # 1
    

    # ===================题目四===================
    input=111                 # 定义全局input的值
    def f1():                 # 定义f1(),需确定其中变量名关系: 无
        def f2():             # 定义f2(),需确定其中变量名关系: input
            # input=333
            print(input)      # 需要变量input,input按f2()->f1()->全局->内置的顺序找
                              # f2内不存在,f1内有,使用局部f1的input
        input=222
        f2()
    f1()
    # 1,执行f1()  2,定义f2()  3,定义局部input的值222
    # 4,执行f2()  5,print(input),使用局部f1的input,input已定义,输出222
    
    # 222
    

    # ===================题目五===================
    x=111               # 定义全局x的值
    def func():         # 定义func(),需确定其中变量名关系: x
        print(x)        # 需要变量x,x按func()->全局->内置的顺序找
                        # func内存在,使用func的x
        x=222
    func()
    # 1,执行func()   2,print(x),使用func的x,x未定义,报错
    # 报错
    

    # ===================题目六===================
    x=111               # 定义全局x的值
    def foo():          # 定义foo(),需确定其中变量名关系: x
        print(x,)       # 需要变量x,x按foo()->全局->内置的顺序找
                        # foo内不存在,全局存在,使用全局的x
    
    def bar():          # 定义bar(),需确定其中变量名关系: x
        print(x)        # 需要变量x,x按bar()->全局->内置的顺序找
                        # bar内不存在,全局存在,使用全局的x
    
    foo()
    # 1,执行foo()  2,print(x),使用全局的x,x已定义,输出111
    bar()
    # 1,执行bar()  2,print(x),使用全局的x,x已定义,输出111
    
    # 111   111
    

    # ===================题目七===================
    x=1                  # 定义全局x的值
    def func2():         # 定义func2(),需确定其中变量名关系: 无
        func1()
    
    x=2                  # 定义全局x的值
    def func1():         # 定义func1(),需确定其中变量名关系: x
        print(x)         # 需要变量x,x按func1()->全局->内置的顺序找
                         # func1内不存在,全局内有,使用全局的x
    
    x=3                  # 定义全局x的值
    func2()
    # 1,执行func2()   2,执行func1()
    # 3,执行print(x),需要变量x,使用全局的x,全局已定义,x=3,输出3
    
    # 3
    

    # ===================题目八===================
    # 1、如下全局变量记录了当前登录用户,编写登录功能,
    # 一旦用户登录成功,则将全局变量赋值为当前登录的用户名
    # login_user=None
    # 2、针对之前编写的查询余额的功能,添加额外的逻辑:
    # 如果用户没有登录,则先执行登录功能
    
    
    # ----------1----------------------
    login_user=None
    def login():
        inp_user = input("请输入用户名:")
        inp_password = input("请输入密码:")
        with open("user_list.txt","r",encoding="utf-8") as f:
            for line in f:
                user, password = line.strip().split(":")
                if user == inp_user and password == inp_password:
                    print("登陆成功")
                    global login_user
                    login_user = inp_user
                    break
            else:
                print("账号或密码错误")
    
    
    # login()
    # print(login_user)
    
    
    
    
    
    # ----------2----------------------
    def inquire():
        while login_user is None:
            login()
        inquire_user = input("请输入要查询余额的账号:")
        with open("db.txt","r",encoding="utf-8") as f:
            for line in f:
                user,money = line.strip().split(":")
                if user == inquire_user:
                    print(money)
                    break
            else:
                print("账号不存在")
    
    inquire()
    
  • 相关阅读:
    code1135 选择客栈
    code3289 花匠
    code1167 树网的核
    线段树
    二分图 and code1170 双栈排序
    code1001 舒适的路线
    svg的自述
    a链接bug
    去除a标签链接触摸时产生边框
    前端资源收藏
  • 原文地址:https://www.cnblogs.com/achai222/p/12525038.html
Copyright © 2011-2022 走看看