封装函数 斐波那契数列|密码等级校验|密码加密

w01 斐波那契数列

'''
斐波那契数列是一种特殊的数列,
很多生活和企业场景中都能见到满足该数列的数据排列方式;
现在要求你封装一个用于获取斐波那契数列数据的功能函数,
用于底层数据支持
'''
def fibonacci(n):
    # 排除前两位
    
    if n == 0:
        return 0
    elif n == 1:
        return 1

    # 使用变量保存前两个斐波那契数
    a, b = 0, 1
    # 计算第 n 个斐波那契数
    for _ in range(2, n + 1):
        a, b = b, a + b  # 更新 a 和 b

    return b

#输入需要的个数
n = int(input("请输入位置"))
print(fibonacci(n))

w02 密码等级校验

'''
按照用户输入密码的字符,判断用户的密码强度,基本要求如下
- 弱:都是数字,或者都是大写字母/小写字母组成的密码
- 中等:[数字、大写字母] 或者 [数字、小写字母]
    或者 [大写字母、小写字母] 或者 [大小写字母、数字]组成的密码
- 强:[数字、大写字母] 或者 [数字、小写字母]
    或者 [大写字母、小写字母]并结合特殊符号组成的密码
'''


def check_password_strength(password):
    # 定义字符(遍历password查看是否有该元素)
    num = any(char.isdigit() for char in password)
    upper = any(char.isupper() for char in password)
    lower = any(char.islower() for char in password)
    special = any(not char.isalnum() for char in password)

    # 判断密码强度
    #弱密码,由数字,大小写字母中任意元素单独组成
    if (num and not upper and not lower) or \
            ( not num and upper and not lower) or \
            ( not num and not upper and lower):
        return "弱"
   #中等,[数字、大写字母] 或者 [数字、小写字母] 或者 [大写字母、小写字母] 或者 [大小写字母、数字]组成的密码
    elif (num and (upper or lower)) or \
         (upper and lower) or \
         (upper and lower and num ):

        return "中等"
    #强,[数字、大写字母] 或者 [数字、小写字母] 或者 [大写字母、小写字母]并结合特殊符号组成的密码
    elif (num and upper and special) or \
     (num and lower and special) or \
     (upper and lower and  special):
        return "强"
    #排除特殊情况
    else:
        return "弱"

#让用户输入密码
password = input("请输入密码: ")
strength = check_password_strength(password)
print(strength)

w03 密码加密

'''
编写一个函数,实现密码的错位加密

编写一个函数,实现密码的错位解密
'''
def encrypt(password, n=4):
    """加密函数"""
    ep = ""
    for i in str(password):
        ac = ord(i) + n
        if ac > 126:
            ac = 32 + (ac - 127)  # 回绕到可打印范围
        _ac = chr(ac)
        ep += _ac
    return ep

def decrypt(password, n=4):
    """解密函数"""
    pwd = ""
    for i in str(password):
        ac = ord(i) - n # 确保字符仍在可打印范围内(32-126)
        if ac < 32:
            ac = 126 - (31 - ac)  # 回绕到可打印范围
        _ac = chr(ac)
        pwd += _ac
    return pwd

pd = input("请输入明文数据:")
print("加密后的数据:", encrypt(pd, 5))

pd2 = input("请输入密文数据:")
print("解密后的数据:", decrypt(pd2, 5))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值