python每天一个小练习-强壮的密码
强壮的密码
题目来源
- checkio
需求
斯蒂芬和索菲亚对于一切都使用简单的密码,忘记了安全性。请你帮助尼古拉开发一个密码安全检查模块
- 如果密码的长度大于或等于10个符号,至少有一个数字,一个大写字母和一个小写字母,该密码将被视为足够强大
- 密码只包含ASCII拉丁字母或数字
- 输入: 密码 (str, unicode)
- 输出: 密码的安全与否,作为布尔值(bool),或者任何可以转换和处理为布尔值的数据类型。你会在结果看到转换后的结果(True 或 False)
分析
对一个字符串进行解析:
- 长度大于等于10
- 有一个数字
- 有一个大写
- 有一个小写
- 只是字母或数字
反向思路:
- 长度大于10的数字和字母组合字符串
- 不都是数字
- 不都是字母
- 不都是大写
- 不都是小写
想到的解决方式
- 正则表达式
- 字符串内置方法
代码实现
- 第一种方式
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
- 第二种方式
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())) # 只是数字和字母
知识点
正则表达式
字符串内置方法
str.isalnum():至少有一个字符并且所有的字符都是字母或者数字则返回True,否则返回False(判断是否含有标点符号等特殊字符)str.isalpha():至少有一个字符并且所有的字符都是字母则返回True,否则返回False(判断全是link字母,不区分大小写)str.isdecimal():如果str中只包含十进制数字则返回True,否则返回Falsestr.isdigit():如果str中只包含数字则返回True,否则返回Fstr.islower():如果str中至少包含一个区分大小写的字符,并且所有的的这些字符(区分大小写的)字符都是小写则返回T,否则返回Fstr.isupper();如果str中至少包含一个区分大小写的字符,并且所有的的这些字符(区分大小写的)字符都是大写则返回T,否则返回Fstr.lstrip():裁掉str左边的空格str.rstrip():裁掉str右边的空格str.upper():转换str中的小写字母为大写str.lower():转换str中的大写字母为小写str.capitalize():把字符串的第一个字符大写str.swapcase():反转大小写
python每天一个小练习-强壮的密码的更多相关文章
- 用Python写一个小爬虫吧!
学习了一段时间的web前端,感觉有点看不清前进的方向,于是就写了一个小爬虫,爬了51job上前端相关的岗位,看看招聘方对技术方面的需求,再有针对性的学习. 我在此之前接触过Python,也写过一些小脚 ...
- Python:通过一个小案例深入理解IO多路复用
通过一个小案例深入理解IO多路复用 假如我们现在有这样一个普通的需求,写一个简单的爬虫来爬取校花网的主页 import requests import time start = time.time() ...
- 利用Python完成一个小游戏:随机挑选一个单词,并对其进行乱序,玩家要猜出原始单词
一 Python的概述以及游戏的内容 Python是一种功能强大且易于使用的编程语言,更接近人类语言,以至于人们都说它是“以思考的速度编程”:Python具备现代编程语言所应具备的一切功能:Pytho ...
- python的一个小原理
在许多语言当中,类似于a.b()这样的调用方法是一个整体,但在Python中,它其实是两部分:获取属性a.b,调用().所以也可以写成: c = a.b c() 2.关于继承 class a: num ...
- python每天一个小练习-列表元素非唯一
列表元素非唯一 来源 checkio 需求 你将得到一个含有整数(X)的非空列表.在这个任务里,你应该返回在此列表中的非唯一元素的列表.要做到这一点,你需要删除所有独特的元素(这是包含在一个给定的列表 ...
- 用python实现一个小游戏——抽牌
想要实现一个抽牌的功能,有很多种实现方法,这时候我们创造一个对象,通过内置方法来完成这个功能: # Author:Zhang Zhao # -*-coding:utf-8-*- from collec ...
- Python编程-一个小爬虫工具的实现过程
需求描述: 1,打开网站: 2,获取网站的文件内容: 3,返回保存到文件中: 这里的就用到了多线程的方法 import requests,threading,time def write_html(u ...
- 由Python的一个小例子想到的
习题: L = [1,2] L.append(L) Print L 问,结果是什么. 结果是,[1,2,[...]] 这是什么意思呢?就是说[...]表示的对[1,2]的无限循环.这一点是在C#等静态 ...
- 简明Python中的一个小错误
最近在学Python,先看的是<Python基础教程>,后来经别人推荐,感觉网络上的<简明Python教程>也挺好的,在里面发现一个小错误. 网址如下:http://sebug ...
随机推荐
- 【源码分析】cJSON库学习
cJSON库是什么? cJSON是一个轻量级的json解析库.使用起来非常简单,整个库非常地简洁,核心功能的实现都在cJSON.c文件,非常适合阅读源代码来学习C语言.最近读完这个库的源码,分享自己收 ...
- 解析PHP中常见的mongodb查询操作
详细出处参考:http://www.jb51.net/article/38839.htm<?php// 欄位字串為$querys = array("name"=>&qu ...
- ABP官方文档翻译 2.5 设置管理
设置管理 介绍 关于 ISettingStore 定义设置 设置范围 重写设置定义 获取设置值 服务端 客户端 更改设置 关于缓存 介绍 每个应用都需要存储设置,并且在应用的某些地方需要使用这些设置. ...
- cctype学习
#include <cctype>(转,归纳很好) 头文件描述: 这是一个拥有许多字符串处理函数声明的头文件,这些函数可以用来对单独字符串进行分类和转换: 其中的函数描述: 这些函数传入一 ...
- 深入浅出node.js
http://www.infoq.com/cn/articles/what-is-nodejs/
- Intellij IDEA快捷键(必备)
快捷键 功能描述 Ctrl + Shift + Space 智能代码提示(必备) Ctrl + R 在当前文件进行文本替换 Ctrl + F 在当前文件进行文本查找 Ctrl + Y 删除光标所在行 ...
- 智能指针剖析(上)std::auto_ptr与boost::scoped_ptr
1. 引入 C++语言中的动态内存分配没有自动回收机制,动态开辟的空间需要用户自己来维护,在出函数作用域或者程序正常退出前必须释放掉. 即程序员每次 new 出来的内存都要手动 delete,否则会造 ...
- Windows 随手笔记
1.常见快捷方式 远程桌面 mstsc 注册表 regedit 组策略 gpedit.msc 2.Windows命令手册 ping命令 ping [-t] [-a] [-n count] [-l le ...
- LeetCode 题目总结/分类
LeetCode 题目总结/分类 利用堆栈: http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/ http://oj.l ...
- hdu2594 Simpsons’ Hidden Talents
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2594 思路: 其实就是求相同的最长前缀与最长后缀 KMP算法的简单应用: 假设输入的两个字符串分别是s ...