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()
    
  • 相关阅读:
    QT全局热键(用nativeKeycode封装API,不跨平台)
    Android 短信模块分析(二) MMS中四大组件核心功能详解
    一个高效过滤非UTF8字符的C函数(也可用来判断是否utf8)
    Windows-1252对Latin1编码有改变(并不完全兼容),而且Latin1缺失了好多西欧字符(法语,德语,西班牙语都有)
    C++静态库与动态库
    CFBundleName系列参数的含义
    QT完美转换特殊字符的大小写
    Java-继承的应用
    RTTI、虚函数和虚基类的实现方式、开销分析及使用指导(虚函数的开销很小,就2次操作而已)
    delphi如何获得当前操作系统语言环境
  • 原文地址:https://www.cnblogs.com/linqiaobao/p/12525216.html
Copyright © 2011-2022 走看看