day13作业

第一大题

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

1.

# 题目一
# input=333
# def func():
#     input=444
# func()
# print(input)

第一题

2.

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

第二题

3.

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

第三题

4.

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

第四题

5.

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

第五题

6.

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

第六题

7.

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

第七题# 第二大题

第二大题

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

dic2 = {}


def login():
    global login_user
    with open('c.txt', mode='rt', encoding='utf-8')as f:
        for i in f:
            name1, pwd1, count = i.strip().split(':')
            dic2.setdefault(name1, [pwd1, int(count)])
    name = input('请输入您的用户名:').strip()
    pwd = input('请输入您的密码:').strip()
    if name in dic2 and pwd == dic2[name][0]:
        print('登入成功')
        login_user = name
        homepage()
    else:
        print('账号密码错误')
        homepage()


def register():
    name = input('请输入用户名:').strip()
    pwd = input('请输入密码:').strip()
    if name in dic2:
        print('用户已存在')
    else:
        with open('c.txt', mode='at', encoding='utf-8')as f4:
            f4.write(f'{name}:{pwd}:{int(0)}\n')
            print('注册成功')
    homepage()


def balance():
    if login_user is None:
        print('请先登入')
        login()
    else:
        print(f'{login_user}先生,您当前余额为{dic2[login_user][1]}')
        homepage()


def recharge():
    if login_user is None:
        print('请先登入')
        login()
    nbr = input('请输入要充值的金额:')
    if nbr.isdigit():
        nbr = int(nbr)
        dic2[login_user][1] += nbr
        print(f'亲爱的{login_user}先生,您已成功充值{nbr}元')
        with open('c.txt', mode='wt') as f:
            for i in dic2:
                with open('c.txt', mode='at', encoding='utf-8')as f1:
                    f1.write(f'{i}:{dic2[i][0]}:{dic2[i][1]}\n')
        homepage()
    else:
        print('请输入正确的数字')


dic = {'1': [login, '登入'],
       '2': [register, '注册'],
       '3': [balance, '查询余额'],
       '4': [recharge, '充值']}


def homepage():
    with open('c.txt', mode='rt', encoding='utf-8')as f:
        for i in f:
            name1, pwd1, count = i.strip().split(':')
            dic2.setdefault(name1, [pwd1, int(count)])
    print('输出0退出')
    for i in dic:
        print(f'{i}.{dic[i][1]}')
    num = input('请输入功能对应的编号:')
    if num in dic:
        dic[num][0]()
    elif num == '0':
        if login_user is None:
            print('已退出')
            return
        else:
            print(f'帅气的{login_user}先生欢迎下次再来!')
            return
    else:
        print('请输入正确的编号')


homepage()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值