练习内容
借用之前循环控制练习的代码,将部分功能定义成函数,尝试简化或明细主程序逻辑
- 熟悉定义函数以及调用的方法
- 把用户名校验和密码校验2个功能定义成函数,分别在主程序中做调用
- 尝试是否能够简化逻辑
参考代码如下:
print('请输入用户名')
run = True
while run:
print('用户名:', end='')
username = input()
if username == "李云龙":
print('你好,请输入密码!')
print('密码:', end='')
cont = 3
while cont != 0:
password = input()
if password == "123456":
print('密码通过验证,登陆成功!')
run = False
break
elif cont > 1:
print('密码错误!请重新输入。剩余验证次数:' + str(cont - 1) + '次')
print('密码:', end='')
cont = cont - 1
else:
print('密码错误超过3次,请重新输入用户名。')
cont = cont - 1
else:
print('无此用户名,请重新输入!')
代码实现
函数定义
将用户名校验功能定义成一个函数
def check_user(userInput):
print('请输入用户名')
print('用户名:', end='')
userInput = input()
if userInput == '李云龙':
print('你好!李先生。')
else:
print('请重新输入用户名')
一般来说主程序直接用check_user()
即可调用函数,但实际上括号内没有参数会执行错误
所以改了一种方式来实现*(算取巧,也许应该有其他正常的实现方式)*
主程序代码如下:
username = 1 # 定义1个变量,赋值是随便定的暂时不影响,python好像无法只定变量而不赋值,后续抽空再研究怎么解决
check_user(username) # 调用函数,这里无论传任何参数进去,都会正常执行到函数内部的`input()`等待用户输入
完整代码执行结果如下
- 控制台提示输入用户名,等待输入操作:
请输入用户名
用户名:
- 输入信息后,控制台会有相应提示
输入123
,执行结果如下:
请输入用户名
用户名:123
请重新输入用户名
输入李云龙
,执行结果如下:
请输入用户名
用户名:李云龙
请重新输入用户名
P.S.同理可以把密码校验功能定义成函数
代码结构
简化主程序代码结构
username = 1 # 声明变量,用户名
password = 1 # 声明变量,密码
run = True # 声明1个布尔变量
while run: # 设置1个布尔变量,以便在用户名、密码都检验通过时跳出 while 循环
if check_user(username): # 校验用户名
i = 1 # 初始化检验次数 i
while i <= 3: # 检验限定次数 3
if check_passw(password): # 校验密码
run = False # 用户名、密码都校验通过,改变 while循环 判定条件
break # 跳出 子while循环
elif i == 3:
print('密码验证次数超限,重新输入用户名')
i += 1
else:
print('密码检验还剩【' + str(3 - i) + '】次')
i += 1
else:
print('不存在该用户名')
完整代码
基于以上,微调润色了代码,具体如下
def check_user(userInput):
print('请输入用户名')
print('用户名:', end='')
userInput = input()
print('')
if userInput == '李云龙':
print('你好!李先生。')
return True
else:
return False
def check_passw(pswInput):
print('请输入密码')
print('密码:', end='')
pswInput = input()
print('')
if pswInput == '123456':
print('恭喜您,登陆成功!')
input('请按 <回车> 退出')
return True
else:
print('密码错误')
return False
username = 1
password = 1
print('用户名【李云龙】,密码【123456】,欢迎测试!!\n')
run = True
while run:
if check_user(username):
i = 1
while i <= 3:
if check_passw(password):
run = False
break
elif i == 3:
print('密码验证超过3次,请重新登录')
i += 1
else:
print('密码校验还剩【' + str(3-i) + '】次')
i += 1
else:
print('不存在该用户名')
执行效果如下:
用户名【李云龙】,密码【123456】,欢迎测试!!
请输入用户名
用户名:123
不存在该用户名
请输入用户名
用户名:李云龙
你好!李先生。
请输入密码
密码:123
密码错误
密码校验还剩【2】次
请输入密码
密码:123
密码错误
密码校验还剩【1】次
请输入密码
密码:123
密码错误
密码验证超过3次,请重新登录
请输入用户名
用户名:123
不存在该用户名
请输入用户名
用户名:李云龙
你好!李先生。
请输入密码
密码:123
密码错误
密码校验还剩【2】次
请输入密码
密码:123456
恭喜您,登陆成功!
请按 <回车> 退出
Process finished with exit code 0