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()
  • 相关阅读:
    命令行中邮件的收发
    关于location对象
    正则表达式
    一家初创公司的 CTO 应当做什么?
    移动数据网络质量的国家奖牌榜
    MFQ&PPDCS测试分析和测试设计框架l学习记录
    Python学习笔记之基本语法学习1
    《用Python做HTTP接口测试》学习感悟
    我的中台的理解
    中台与平台的区别
  • 原文地址:https://www.cnblogs.com/surpass123/p/12529388.html
Copyright © 2011-2022 走看看