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

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

    =题目一=

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

    print是在全局名称中的则会找到input=333

    =题目二=

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

    调用func()运行函数体遇到print(x),当前位置没有则找到全局名称空间的x=111

    =题目三=

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

    调用foo(),运行函数体func(),则运行func()函数体代码,找到print(x)当前位置没有则找到全局名称空间的x=1

    =题目四=

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

    调用f1()遇到调用f2(),遇到print(input),则找到input=222

    =题目五=

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

    调用func(),函数体代码内x先调用后定义,报错

    =题目六=

    x=111
    
    def foo():
        print(x,)
    
    def bar():
        print(x)
    
    foo()
    bar()
    

    调用foo(),bar(),遇到print(x),局部名称空间没有,找到全局名称空间的x=111,然后打印

    =题目七=

    x=1
    def func2():
        func1()
    
    x=2
    def func1():
        print(x)
    
    x=3
    
    func2()
    

    调用func2(),在调func1(),遇到print(x),则找到全局名称空间的x=3,然后打印

    =题目八=
    1、如下全局变量记录了当前登录用户,编写登录功能,一旦用户登录成功,则将全局变量赋值为当前登录的用户名

    login_user=None
    login_user=None
    def login():
        inp_name=input("your name:").strip()
        inp_pwd=input('your pwd:').strip()
        with open(r'users.txt','r',encoding='utf-8') as f:
            for line in f:
                name,password=line.strip().split(':')
                if inp_name == name and inp_pwd == password:
                    login_user=inp_name
                    return login_user
            else:
                print('用户名或密码错误')
    print(login())
    

    2、针对之前编写的查询余额的功能,添加额外的逻辑:如果用户没有登录,则先执行登录功能

    login_user=None
    def show_money():
        """显示余额"""
        global login_user
        if not login_user:
            user_login()
    
        with open("db.txt", "r", encoding="utf-8") as f:
            for line in f:
                name, pwd, mon = line.strip("
    ").split(":")
                if login_user in line:
                    print("{}用户账户余额为{}".format(login_user, mon))
                    # return mon
    
    def user_login():
        """用户登录验证"""
        user_name=input("请输入用户名>>").strip()
        passwd=input("请输入密码>>").strip()
        with open("db.txt", "r", encoding="utf-8") as f:
            for line in f:
                name, pwd, money = line.strip("
    ").split(":")
                if user_name == name and passwd == pwd:
                    print("用户{}登录成功。".format(user_name))
                    global login_user
                    login_user=user_name
                    break
            else:
                print("用户名或密码错误。")
    
    show_money()
    
  • 相关阅读:
    VMware克隆虚拟机,克隆机网卡启动不了解决方案
    实现列表双击可编辑,异步更新;实现删除的即时移除;
    HTTP请求之:PHP函数header常用功能
    MySQL Innodb的两种表空间方式
    MySQL表分区技术
    [java]实体类(VO,DO,DTO,PO)的划分
    [java]框架中为什么用到反射?
    [java]springboot集成mybatis
    [java]servlet乱码问题解决
    [sql]mysql部署
  • 原文地址:https://www.cnblogs.com/linqiaobao/p/12525216.html
Copyright © 2011-2022 走看看