day15
作业要求:下述所有代码画图以及分析代码执行流程
1、以定义阶段为准,先画出名称空间的嵌套关系图
2、然后找到调用函数的位置,写出函数调用时代码的执行过程,涉及到名字的查找时,参照1中画好的嵌套图,标明查找顺序,一层一层直到找到位置
=题目一=
input=333
def func():
input=444
func()
print(input) #333
题目二=
def func():
print(x)
x=111
func() #111
=题目三=
x=1
def func():
print(x) #1
def foo():
x=222
func()
foo()
=题目四=
input=111
def f1():
def f2():
# input=333
print(input) #222
input=222
f2()
f1()
=题目五=
x=111
def func():
print(x) #报错
x=222
func()
=题目六=
x=111
def foo():
print(x,) #111
def bar():
print(x) #111
foo()
bar()
=题目七=
x=1
def func2():
func1()
x=2
def func1():
print(x) #3
x=3
func2()
=题目八=
1、如下全局变量记录了当前登录用户,编写登录功能,一旦用户登录成功,则将全局变量赋值为当前登录的用户名
login_user=None
login_user=None
username='egon'
password='123'
def login():
user_name = input('请输入用户名:').strip()
user_pwd = input('请输入密码:').strip()
if user_name ==username and user_pwd:
print('登录成功')
global login_user
login_user = user_name
login()
print(login_user)
结果展示:
请输入用户名:egon
请输入密码:123
登录成功
egon
2、针对之前编写的查询余额的功能,添加额外的逻辑:如果用户没有登录,则先执行登录功能
def check_balance():
'''查看余额功能'''
if login_user:
with open('user_info.txt', 'r', encoding='utf-8')as f:
for line in f:
username,password , balance = line.strip().split(':')
if user_info['username'] == username:
print(f'用户{username}余额为:{balance}')
else:
print('请先登录!')
login()