作业要求:下述所有代码画图以及分析代码执行流程
1、以定义阶段为准,先画出名称空间的嵌套关系图
2、然后找到调用函数的位置,写出函数调用时代码的执行过程,涉及到名字的查找时,参照1中画好
的嵌套图,标明查找顺序,一层一层直到找到位置
=题目一=
input=333
def func():
input=444
func()
print(input)
图:
=题目二=
def func():
print(x)
x=111
func()
图:
=题目三=
x=1
def func():
print(x)
def foo():
x=222
func()
foo()
图:
=题目四=
input=111
def f1():
def f2():
## input=333
print(input)
input=222
f2()
f1()
图:
=题目五=
x=111
def func():
print(x) ##
x=222
func()
图:
=题目六=
x=111
def foo():
print(x,)
def bar():
print(x)
foo()
bar()
图:
=题目七=
x=1
def func2():
func1()
x=2
def func1():
print(x)
x=3
func2()
图:
=题目八=
1、如下全局变量记录了当前登录用户,编写登录功能,一旦用户登录成功,则将全局变量赋值为当前登录的用户名
login_user=None
def log_in():
'''登录功能'''
user_info = {}
with open(r'C:UsersccfPycharmProjectsS14day15文件user_info.txt', mode='r', encoding='utf-8') as f:
for line in f:
user, pwd = line.strip().split(':')
user_info[user] = pwd
# print(user_info)
for x in range(0, 3):
inp_name = input('请输入账号:').strip()
if inp_name in user_info:
inp_pwd = input('账户名正确,请输入密码:').strip()
if inp_pwd == user_info[inp_name]:
print("登录成功")
login_user = inp_name
break
else:
print("密码错误,请重新输入:")
else:
print("账号错误,请重新输入:")
log_in()
2、针对之前编写的查询余额的功能,添加额外的逻辑:如果用户没有登录,则先执行登录功能
def check_money(username):
dic = {}
with open(r'C:UsersccfPycharmProjectsS14day15文件db3.txt', 'r', encoding='utf-8') as f:
for line in f:
user, money = line.strip().split(':')
dic[user] = int(money)
if not user_info.get('user'):
log_in()
if username not in dic:
return
return dic.get(username)
check_money()