Python Code Wars 001 验证 Password

前言

Docker系列教程,准备制作成视频课,有需要的可以私聊我~~,接下来的时间,给大家带来好玩有趣的代码战争系列。这次选择的编程语言是Python3,作为一个DevOps编程能力也是要自我强化的,所以大家如果有兴趣可以和我一起玩Python Code Wars !

第一战!验证 Password

每个人设置密码都有自己的习惯,而且随着互联网的兴起,我们需要记住的密码越来越多,会出现自己也记不住密码的事情。所以很多人设置密码的时候,设置自己印象最深刻的一串数字加字符,最简单的密码莫过于123456和自己的手机号~

今天我们来做一个编程实验,用于验证自己密码是否足够强大!如何判断密码是否强大了,首先密码长度要足够长,最少也要11位吧(电话号码的长度),其次不能只是一串数字要包含字母,而且字母需要有大写字母和小写字母,才能称的上是足够强大!注意这里有一个前提,我们验证的密码,只包含数字+小写字母+大写字母,特殊字符不考虑!

题目既然出了,接下来就是开始动手编写啦!

在写之前,我的思路是用正则表达式去匹配,然后得出密码是否强大~~所以写的代码如下

import re
def checkio(data):
r1 = re.search(r'[0-9]+',data)
r2 = re.search(r'[a-z]+',data)
r3 = re.search(r'[A-Z]+',data)
r4 = re.match(r'\w{11,}',data)
if bool(r1) and bool(r2) and bool(r3) and bool(r4):
return True

else:
return False

if __name__ == '__main__':
checkio('your password')

很显然我写的代码,很简单,是最容易想到的一种,那么还有没有更好的方式来实现了,当然有,大神的代码比我简洁的多。

checkio = lambda s:not (
len(s) < 11
or s.isdigit()
or s.isalpha()
or s.islower()
or s.isupper()
)

checkio('your password')

逆向思维,由于题目中已经限定密码不包含特殊字符,所以列出所有的反例,不满足所有的反例,自然满足我们的要求。所有编程思维很重要,但是何时何地的去运用也很重要,一招鲜吃遍天下是不可能的,接下来你愿意和我一起挑战Python Code Wars 吗?


分享到:


相關文章: