【发布时间】:2020-04-28 17:20:11
【问题描述】:
我最近开始学习 Python,并在遇到这个场景时开始处理场景:
问题: 网站要求用户输入用户名和密码进行注册。编写程序来检查有效性 用户输入的密码。 以下是检查密码的标准: 1. [a-z] 之间至少有 1 个字母 2. [0-9]之间至少有1个数字 1. [A-Z] 之间至少有 1 个字母 3. [$#@] 中至少 1 个字符 4、交易密码最小长度:6 5.交易密码最大长度:12 您的程序应该接受一系列逗号分隔的密码,并根据上述检查它们 标准。将打印符合条件的密码,每个密码用逗号分隔。 例子 如果将以下密码作为程序的输入给出: ABd1234@1,a F1#,2w3E,2We3345 那么,程序的输出应该是: ABd1234@1*
我解决问题的方法是以下代码:
'''
def validity_check(pword):
return \
(any(i.islower() for i in pword)) and \
(any(i.isnumeric() for i in pword)) and \
(any(i.isupper() for i in pword)) and \
(any((i == "$" or i == "#" or i == "@") for i in pword)) and \
(6 <= len(pword) < 13)
raw_input = input("Please enter a series of passwords to check, separated by a comma: ")
raw_list = raw_input.split(",")
valid_pwords = []
for i in raw_list:
if validity_check(i) == True:
valid_pwords.append(i)
print(",".join(valid_pwords))
'''
我的解决方案似乎有效,但我的问题是关于可读性。自从开始这些 Python 问题以来,我已经有点痴迷于尽可能少的代码行。程序可以更短吗?我选择使用带有三元运算符的单个函数,这会影响可读性吗?
由于我是 Python 新手,因此非常欢迎对该程序的任何帮助和批评!
【问题讨论】:
-
“可读性”是旁观者眼中的东西 - 我看到超复杂的代码被打成一行,因为支持所述代码的团队完全理解它。否则我会认为“不可读”和“不可维护”对他们来说是最佳解决方案。
标签: python