强壮的密码

题目来源

  • checkio

需求

斯蒂芬和索菲亚对于一切都使用简单的密码,忘记了安全性。请你帮助尼古拉开发一个密码安全检查模块

  • 如果密码的长度大于或等于10个符号,至少有一个数字,一个大写字母和一个小写字母,该密码将被视为足够强大
  • 密码只包含ASCII拉丁字母或数字
  • 输入: 密码 (str, unicode)
  • 输出: 密码的安全与否,作为布尔值(bool),或者任何可以转换和处理为布尔值的数据类型。你会在结果看到转换后的结果(True 或 False)

分析

  • 对一个字符串进行解析:

    • 长度大于等于10
    • 有一个数字
    • 有一个大写
    • 有一个小写
    • 只是字母或数字
  • 反向思路:

    • 长度大于10的数字和字母组合字符串
    • 不都是数字
    • 不都是字母
    • 不都是大写
    • 不都是小写

想到的解决方式

  1. 正则表达式
  2. 字符串内置方法

代码实现

  1. 第一种方式
def check_strong(input_string):
''' :param input_string:
:return:
'''
import re
flag = False
r1 = re.search('[a-z]+',input_string)
r2 = re.search('[A-Z]+',input_string)
r3 = re.search("[0-9]+",input_string)
r4 = re.search("\w{10,}",input_string)
if r1 and r2 and r3 and r4:
flag = True
return flag
  1. 第二种方式
def check(psswd):
''' :param psswd:
:return:
'''
return ( (len(psswd) >= 10) and #长度大于等于10
(not psswd.islower()) and # 不都是小写 (有大写)
(not psswd.isupper()) and # 不都是大写 (有小写)
(not psswd.isalpha()) and #不都是字母(有数字)
(not psswd.isdigit()) and # 不都是数字(有字母)
(psswd.isalnum())) # 只是数字和字母

知识点

正则表达式

参考链接

字符串内置方法

  1. str.isalnum():至少有一个字符并且所有的字符都是字母或者数字则返回True,否则返回False(判断是否含有标点符号等特殊字符)

  2. str.isalpha():至少有一个字符并且所有的字符都是字母则返回True,否则返回False(判断全是link字母,不区分大小写)

  3. str.isdecimal():如果str中只包含十进制数字则返回True,否则返回False

  4. str.isdigit():如果str中只包含数字则返回True,否则返回F

  5. str.islower():如果str中至少包含一个区分大小写的字符,并且所有的的这些字符(区分大小写的)字符都是小写则返回T,否则返回F

  6. str.isupper();如果str中至少包含一个区分大小写的字符,并且所有的的这些字符(区分大小写的)字符都是大写则返回T,否则返回F

  7. str.lstrip():裁掉str左边的空格

  8. str.rstrip():裁掉str右边的空格

  9. str.upper():转换str中的小写字母为大写

  10. str.lower():转换str中的大写字母为小写

  11. str.capitalize():把字符串的第一个字符大写

  12. str.swapcase():反转大小写

python每天一个小练习-强壮的密码的更多相关文章

  1. 用Python写一个小爬虫吧!

    学习了一段时间的web前端,感觉有点看不清前进的方向,于是就写了一个小爬虫,爬了51job上前端相关的岗位,看看招聘方对技术方面的需求,再有针对性的学习. 我在此之前接触过Python,也写过一些小脚 ...

  2. Python:通过一个小案例深入理解IO多路复用

    通过一个小案例深入理解IO多路复用 假如我们现在有这样一个普通的需求,写一个简单的爬虫来爬取校花网的主页 import requests import time start = time.time() ...

  3. 利用Python完成一个小游戏:随机挑选一个单词,并对其进行乱序,玩家要猜出原始单词

    一 Python的概述以及游戏的内容 Python是一种功能强大且易于使用的编程语言,更接近人类语言,以至于人们都说它是“以思考的速度编程”:Python具备现代编程语言所应具备的一切功能:Pytho ...

  4. python的一个小原理

    在许多语言当中,类似于a.b()这样的调用方法是一个整体,但在Python中,它其实是两部分:获取属性a.b,调用().所以也可以写成: c = a.b c() 2.关于继承 class a: num ...

  5. python每天一个小练习-列表元素非唯一

    列表元素非唯一 来源 checkio 需求 你将得到一个含有整数(X)的非空列表.在这个任务里,你应该返回在此列表中的非唯一元素的列表.要做到这一点,你需要删除所有独特的元素(这是包含在一个给定的列表 ...

  6. 用python实现一个小游戏——抽牌

    想要实现一个抽牌的功能,有很多种实现方法,这时候我们创造一个对象,通过内置方法来完成这个功能: # Author:Zhang Zhao # -*-coding:utf-8-*- from collec ...

  7. Python编程-一个小爬虫工具的实现过程

    需求描述: 1,打开网站: 2,获取网站的文件内容: 3,返回保存到文件中: 这里的就用到了多线程的方法 import requests,threading,time def write_html(u ...

  8. 由Python的一个小例子想到的

    习题: L = [1,2] L.append(L) Print L 问,结果是什么. 结果是,[1,2,[...]] 这是什么意思呢?就是说[...]表示的对[1,2]的无限循环.这一点是在C#等静态 ...

  9. 简明Python中的一个小错误

    最近在学Python,先看的是<Python基础教程>,后来经别人推荐,感觉网络上的<简明Python教程>也挺好的,在里面发现一个小错误. 网址如下:http://sebug ...

随机推荐

  1. AIX误删除LV后如何进行现场保护和数据恢复工作

    在AIX环境下,若因维护误操作.存储mapping错误等,不小心将LV误删除,这种损失通常是巨大的.删除后的不当保护及恢复操作可能使数据无法恢复,也可能增加处理的时间与算法复杂度.如何有效保护现场,并 ...

  2. 关于input标签无法对齐的解决方法!

    在布局中发现各个input之间很难对齐,解决方法如下: 将input设置vertical-align属性: vertical-align:middle vertical-align:top verti ...

  3. SDN学习之Mininet验证OpenFlow协议版本

    最近学习如何使用mininet,但是,刚刚开始时一直无法知道如何查看OpenFlow协议的版本,通过查阅网上的资料,从SDNLAB中,学习到了如何验证,mininet自身基于OpenFlow13版本的 ...

  4. 查看当前用户名称:whoami命令

    没什么可讲的,就是显示当前用户名称,效果同"id -un"命令.

  5. 智能指针剖析(下)boost::shared_ptr&其他

    1. boost::shared_ptr 前面我已经讲解了两个比较简单的智能指针,它们都有各自的优缺点.由于 boost::scoped_ptr 独享所有权,当我们真真需要复制智能指针时,需求便满足不 ...

  6. 直接用nose进行django项目测试并输出html报告

    先说需求:1.测试django项目:2.打印测试报告(html格式)有以下几种测试方法:1.django自带的测试模块.在app目录下的tests.py文件中写测试类,类似这样: class MyTe ...

  7. redis性能优化

    redis日志截图:

  8. sbt结合IDEA对Spark进行断点调试开发

    笔者出于工作及学习的目的,经常与Spark源码打交道,也难免对Spark源码做修改及测试.本人一向讲究借助工具提升效率,开发Spark过程中也在摸索如何更加顺畅的对源码进行调试. Spark基于Sca ...

  9. 在Caffe上运行Cifar10示例

    准备数据集 在终端上运行以下指令: cd caffe/data/cifar10 ./get_cifar10.sh cd caffe/examples/cifar10 ./create_cifar10. ...

  10. EF Core 2.0 新特性

    前言 目前 EF Core 的最新版本为 2.0.0-priview1-final,所以本篇文章主要是针对此版本的一些说明. 注意:如果你要在Visual Studio 中使用 .NET Core 2 ...