第一大题
# 作业要求:下述所有代码画图以及分析代码执行流程
# 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()