从键盘输入密码字符串,程序根据给定密码构成规则检测并给出对应提示。
(笔记模板由python脚本于2023年11月27日 19:27:47创建,本篇笔记适合熟悉Python字符串str对象的coder翻阅)
Python 官网:https://www.python.org/
Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
地址:https://lqpybook.readthedocs.io/
自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
—— 华罗庚
本文质量分:
CSDN质量分查询入口:http://www.csdn.net/qc
【题目来源于 CSDN 问答社区提问“密码检测”】
密码字符串格式检测,纯纯的字符串知识。做起来虽然简单,但要“细心”。不然极易异常而中断程序运行。
题目规则:密码至少有8个字符
直接len()一下,小于8个字符,直接抛出的异常信息。
#密码至少有8个字符
if len(passwords) < 8: # 长度不对。
return f"invalidpassword\n\n{' 长度不够8个字符 ':~^33}"
isIn(lis)函数
判定是否含哪一部分字符的函数isIn(lis)
def isIn(lis):
''' 判定密码构成部分 '''
for i in passwords:
if i in lis: # 密码有含lis列表中字符,即返回True,否则返回False。
return True
return False
判定必有大小写字母
大小写字母列表准备
#密码包括大小写英文字母判定
lowers = ''.join([chr(i) for i in range(ord('a'), ord('z')+1)])
uppers = lowers.upper()
print(lowers)
input(uppers)
判定小写字母
if not isIn(list(lowers)): # 不含小写字母,返回异常信息。
return f"invalidpassword\n\n{' 不含小写字母 ':~^34}"
判定大写字母
if not isIn(list(uppers)): # 不含大写字母,返回异常信息。
return f"invalidpassword\n\n{' 不含大写字母 ':~^34}"
判定必有数字
#数字判定
if not isIn(list('0123456789')): # 不含大写字母,返回异常信息。
return f"invalidpassword\n\n{' 不含数字 ':~^36}"
判定必有字母和数字以外的字符
#其他字符判定
passwords = passwords.lower() # 转小写+数字后,好一并删除大小写字母。
for i in passwords[:]:
if i in list(lowers + '0123456789'): # 同时遍历小写字母和数字。
passwords = passwords.replace(i, '') # 将小写字母和数字置'',就是删除。
#print(passwords) # 调试用语句。
return 'valid password' if passwords else f"invalidpassword\n\n{' 不含字母数字以外的字符 ':~^29}"
(源码较长,点此跳过源码)
#!/sur/bin/nve python
# coding: utf-8
def isIn(lis):
''' 判定密码构成部分 '''
for i in passwords:
if i in lis: # 密码有含lis列表中字符,即返回True,否则返回False。
return True
return False
def isPasswords(passwords):
''' 密码格式确认 '''
#密码至少有8个字符
if len(passwords) < 8: # 长度不对。
return f"invalidpassword\n\n{' 长度不够8个字符 ':~^33}"
#密码包括大小写英文字母判定
lowers = ''.join([chr(i) for i in range(ord('a'), ord('z')+1)])
uppers = lowers.upper()
#print(lowers) # 调试用语句。
#input(uppers) # 调试用语句。
if not isIn(list(lowers)): # 不含小写字母,返回异常信息。
return f"invalidpassword\n\n{' 不含小写字母 ':~^34}"
if not isIn(list(uppers)): # 不含大写字母,返回异常信息。
return f"invalidpassword\n\n{' 不含大写字母 ':~^34}"
#数字判定
if not isIn(list('0123456789')): # 不含大写字母,返回异常信息。
return f"invalidpassword\n\n{' 不含数字 ':~^36}"
#其他字符判定
passwords = passwords.lower() # 转小写+数字后,好一并删除大小写字母。
for i in passwords[:]:
if i in list(lowers + '0123456789'): # 同时遍历小写字母和数字。
passwords = passwords.replace(i, '') # 将小写字母和数字置'',就是删除。
#print(passwords) # 调试用语句。
return 'valid password' if passwords else f"invalidpassword\n\n{' 不含字母数字以外的字符 ':~^29}"
if __name__ == '__main__':
passwords = input('\n输入密码:\n').strip()
print(f"\n输出:\n{isPasswords(passwords)}")
我的HOT博:
本次共计收集 246 篇博文笔记信息,总阅读量 40.46w,平均阅读量 1644。已生成 16 篇阅读量不小于 4000 的博文笔记索引链接。数据采集于 2023-10-12 05:41:03 完成,用时 4 分 41.10 秒。
精品文章:
来源:老齐教室
◆ Python 入门指南【Python 3.6.3】
好文力荐:
CSDN实用技巧博文: