[编程菜鸟] Python学习笔记——函数定义练习

Python学习笔记——函数定义练习

练习内容

借用之前循环控制练习的代码,将部分功能定义成函数,尝试简化或明细主程序逻辑

  1. 熟悉定义函数以及调用的方法
  2. 把用户名校验和密码校验2个功能定义成函数,分别在主程序中做调用
  3. 尝试是否能够简化逻辑

参考代码如下:

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()`等待用户输入

完整代码执行结果如下

  1. 控制台提示输入用户名,等待输入操作:
请输入用户名
用户名:
  1. 输入信息后,控制台会有相应提示

输入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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值