python第十五天作业
作业要求:下述所有代码画图以及分析代码执行流程
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
username = 'Lance'
password = '123'
login_user=None
def login_func():
user_name = input('输入账号:').strip()
user_pwd = input('输入密码:').strip()
if username == user_name and password == user_pwd:
print('登陆成功')
global login_user
login_user = user_name
print(login_user)
login_func()
print(login_user)
2、针对之前编写的查询余额的功能,添加额外的逻辑:如果用户没有登录,则先执行登录功能
login_user=None
def login_func():
user_name = input('输入账号:').strip()
user_pwd = input('输入密码:').strip()
with open(r'db.txt','rb') as f:
while True:
res = f.readline().decode('utf-8')
x, y, z = res.strip().split(':')
if x == user_name and y == user_pwd:
print('登陆成功')
global login_user
login_user = user_name
break
else:
print('账号密码错误')
def balance_func():
global login_user
print(login_user)
while True:
if not login_user:
print('没有登陆,请重新登陆')
login_func()
continue
else:
with open(r'db.txt','rb') as f:
while True:
res = f.readline().decode('utf-8')
x,y,z = res.strip().split(':')
if x == login_user:
print('账号{}的余额是:{}元'.format(login_user,z))
break
break
balance_func()