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 嗎?


分享到:


相關文章: