w01. 斐波那契数列
题目描述
斐波那契数列是一种特殊的数列,很多生活和企业场景中都能见到满足该数列的数据排列方式;现在要求你封装一个用于获取斐波那契数列数据的功能函数,用于底层数据支持;
输入描述
输入一个整数n
输出描述
输出位置为n的斐波那契数列对应的数据
示例
输入:1
输出:1
输入:3
输出:2
输入:8
输出:21
def fb(num):
"""输出斐波拉契数列的第n项"""
list_fb = [1, 1]
for i in range(2, num):
list_fb.append(list_fb[i - 1] + list_fb[i - 2])
return list_fb[num - 1]
n = int(input("输入一个整数:"))
print(fb(n))
w02. 密码等级校验
题目描述
按照用户输入密码的字符,判断用户的密码强度,基本要求如下
-
弱:都是数字,或者都是大写字母/小写字母组成的密码
-
中等:[数字、大写字母] 或者 [数字、小写字母] 或者 [大写字母、小写字母] 或者 [大小写字母、数字]组成的密码
-
强:[数字、大写字母] 或者 [数字、小写字母] 或者 [大写字母、小写字母]并结合特殊符号组成的密码
输入描述
用户输入一个字符串密码
输出描述
输出密码强度等级
示例
输入:abcdef
输出:弱密码
输入:abc123
输出:中等强度
输入:Abc123%
输出:强密码
def decide_pwd(pw):
"""声明函数判断输入密码的等级"""
#isdigit用于判断字符串中是否全为数字,isalpha判断字符串中是否全是字母
if pw.isdigit() or pw.isalpha():
return "弱密码"
#isalnum判断字符串中是否由数字或字母组成
elif pw.isalnum():
return "中等强度密码"
else:
return "强密码"
password = input()
print(decide_pwd(password))
w03. 密码加密
题目描述
编写一个函数,实现密码的错位加密
编写一个函数,实现密码的错位解密
输入描述
输入一个字符串明文密码;
输入一个字符串密文数据;
输出描述
打印展示加密后的字符串密文
打印展示解密后的明文字符串
示例
输入:
abc # 明文
def # 密文
输出:
cde # 错位密文(具体错位可以自定义)
cde # 解密明文(具体错位可以自定义)
代码实现
-
下面代码已经实现了基本功能,但是存在BUG(请找出并修正它)
-
def encrypt(password, n=4):
"""加密函数"""
ep = ""
for i in str(password):
ac = ord(i)
ac += n
_ac = chr(ac)
ep += _ac
return epdef decrypt(password, n=4):
"""解密函数"""
pwd = ""
for i in str(password):
ac = ord(i)
ac -= n
_ac = chr(ac)
pwd += _ac
return pwdpd = input("请输入明文数据:")
print("加密后的数据:", encrypt(pd, 5))pd2 = input("请输入密文数据:")
print("解密后的数据:", decrypt(pd2, 5)) -
""" bug为: 1.在加密函数里,如果错位后密码的ASCII值大于126,则无法将大于126的字符转换相应的字符 2.在解密函数里,如果原密码的ASCII值减去要错位的值后小于32,则也无法转换为相应的字符 """ def encrypt(password, n=4): """加密函数""" ep = "" for i in str(password): ac = ord(i) ac += n """在原密码转换为相应的ASCII值后,增加一个判断,判断是否大于126 若果大于126,则将其对126取模后加32,再转换即可 因为前32是非打印区间 """ if ac>126: ac=32+ac%126 _ac = chr(ac) ep += _ac return ep def decrypt(password, n=4): """解密函数""" pwd = "" for i in str(password): ac = ord(i) ac -= n """判断错位后的ASCII值是否小于32,若果是,则将其-32后在加上126 后转换即可 """ if ac<33: ac=126+ac-32 _ac = chr(ac) pwd += _ac return pwd pd = input("请输入明文数据:") print("加密后的数据:", encrypt(pd, 5)) pd2 = input("请输入密文数据:") print("解密后的数据:", decrypt(pd2,5))