测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A37709. 问题描述•网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。

填空题 困难

题目描述

问题描述

•网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。

•合法的密码只能由 a-z 之间 26 个小写字母、A-Z 之间 26 个大写字母、0-9 之间 10

个数字以及!@#$四个特殊字母构成。

•密码最短长度:6 个字符,密码最大长度:12 个字符。

•大写字母、小写字母和数字必须有其中两种,以及至少有四个特殊字符中的一个。

输入描述

C.输入以英文逗号分隔的多个字符组合作为被检测密码。输入时的逗号都作为分隔符,  不被视作检验密码本身。

D.特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输入时所  有 input()函数不可有提示信息。

输出描述

1.逐行输出 0 个或多个合规的密码。

2.输出顺序以输入字符串出现先后为序,即先出现则先输出。

样例输入 1

seHJ12!@,sjdkffH$123,sdf!@^&12 HDH,123&^YUhg@!

样例输出 1

seHJ12!@ sjdkffH$123

参考答案

pwdList = input().split(",") for itm in pwdList: lowerCount = 0 upperCount = 0 digitCount = 0 specialCount = 0 otherCount = 0 for letter in itm: if ord('a') <= ord(letter) <= ord('z'): lowerCount += 1 elif ord('A') <= ord(letter) <= ord('Z'): upperCount += 1 elif ord('0') <= ord(letter) <= ord('9'): digitCount += 1 elif letter in "!@#$": specialCount += 1 else: otherCount += 1 break triState = 0 #大写小写数字种类数量 if lowerCount > 0: triState += 1 if upperCount > 0: triState += 1 if digitCount > 0: triState += 1 if triState >= 2 and specialCount >0 and (6 <= len(itm) <= 12) and otherCount == 0: print(itm)
上一题 下一题