第三单元 开启python小宝箱
Section 1 Judge whether the password is correct or not
第1节 判断密码正误
课堂导入
2
欢欢通过上一单元的学习,有收获。老师奖励了它一个“神秘宝箱”,里面有神秘奖品,但是他在打开宝箱时遇到了困难,因为他输入了错误密码,输了多次才打开python宝箱。
他很好奇,这个宝箱是如何判断密码正误?要如何设计呢?
这节课,我们就来帮助他利用python语言设计出这个判断密码正误的小程序。
1.掌握if判断语句的运用
2.掌握while循环语句的运用。
3.掌握break循环终止语句的运用。
学习目标
1.
简单的密码正误判断
2.
循环进行密码判断
3.
学用elif子判断语句
课程目录
4.
两种循环语句的差别
01
简单的密码正误判断
01 简单的密码正误判断
5
我们要进行程序设计,第一步是整理程序功能的逻辑顺序。
我们先来整理一下“密码正误判断”小程序的逻辑顺序。
开始
预设密码
输入密码
判断两个密码是否相等
结束判断
是
否
01 简单的密码正误判断
在七年级上册的“走进python的世界” 单元中,我们学习了输入、输出函数,以及变量。
input():从控制台获取输入的数据(获取用户输入的密码)
print():输出内容到控制台(提示用户输入密码正确与否)。
变量:存储数据(保存用户输入的密码,用以判断输入密码正确与否)。
判断语句 –‘ if ’作用:实现判断功能。
01 简单的密码正误判断
上图中的重点是“表达式”。如果“表达式”成立,将会执行语句块一,如果“表达式” 不成立,就会执行语句块二。
if 语句的语法格式如下:
if 表达式:
执行语句块一
else:
执行语句块二
语法
格式
注意冒号
注意缩进
注意冒号
注意缩进
01 简单的密码正误判断
使用if语句,我们可以编写简单的密码判断程序,如下图所示。
# 表示为程序注释,目的是方便人们读写
注意:在Python语言中,比较两个值是否相等(逻辑判断),使用“ == ”,如果使用“ = ”则是为变量赋值。
01 简单的密码正误判断
如果将本代码连续运行3次,前两次输入错误密码,第三次输入正确密码,可以得到如下图所示的结果。
10
02
循环进行密码判断
02 循环进行密码判断
密码判断程序每运行一次只能输入一次密码,很不方便,能不能实现只要输入错误就返回重新输入,直到输入正确为止呢?
while循环语句:重复执行所包含的程序块。
while语句的语法与格式
while 表达式:
执行语句块
语法
格式
注意冒号
注意缩进
While 语句的关键是“表达式”,“表达式”成立,下面缩进的语句块就会被执行。
02 循环进行密码判断
使用while循环语句实现密码正误判断的代码,同学们思考一下代码中的“表达式”什么时候成立,什么时候不成立。
下图是运行上面的代码所得的结果:
“! =”表示“不相等”
02 循环进行密码判断
拓展练习:在当前代码中,输人错误时程序没有“ 密码错误”的提示,你能将“密码错误”的提示加人到代码中去吗?先动手试试,再谈谈自己尝试之后有什么发现。
02 循环进行密码判断
方法一:使用 if 判断语句判断密码是否正确。
增加一条判断语句。
下图是运行上面的代码所得的结果:
02 循环进行密码判断
方法二:输入正确密码后,强制让“表达式”不成立,结束循环。
下图是运行上面的代码所得的结果:
通过变量a构成表达式,密码正确时改变a的值使表达式不成立,结束循环。
02 循环进行密码判断
结束循环的最佳方式,就是让while语句的“表达式”不再成立。此外Python还为我们提供了一个break语句, 在循环过程中,任何时候遇到break语句,循环都会立即结束。
用break语句结束循环虽然更简单,但是如果break语句使用过多,一旦出现问题会很难查错。
因此我们还是应该尽量采用“让表达式不成立”来结束循环。针对不同的场景,有考虑的选择哪种方法更合适。
02 循环进行密码判断
17
程序运行效果如下图:
18
密码安全与字典攻击
我们刚才编写的代码中,用户可以无限次输入密码,这为某些人提供了猜测密码的机会。有人发现,人们的密码往往有规律,比如使用8个1或者8个0当作密码、用出生年月日当密码、用姓名字母或者手机号前几位当密码等等。根据这个规律,可以将生日、手机号前几位、姓名拼音、常见数字组合、常见的字母组合等内容全部保存为文本文件,这个文件被称为“密码字典”。黑客们可以编写程序,每次从密码字典中读出一条数据,用来尝试破解密码——这种违法行为, 被称为“字典攻击”。这个文件中只有不到20万条数据,却可以破解人们70%以上的密码。
拓展阅读
19
拓展阅读
{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}密码字典大全
1950至2014八位数生日密码.dic
常见弱密码与常用单词.txt
常用八位数字密码.txt
常用密码字典password.dic
默认字典.dic
全十位数字密码.txt
所有常见姓名拼音.txt
姓名拼音加1960至2014六位生日密码.dic
英文单词全集.dic
黑客使用的常见密码字典文件。
02 循环进行密码判断
20
拓展阅读
黑客使用的“字典生成器”可按需要生成密码字典。
“字典攻击”是现在网络违法人员的常用攻击手段。为避免自己的密码被破解,我们要养成良好的密码管理与设置意识,尽量不要使用“有特殊意义、有规律”的字符或数字作为密码。密码最好同时具备大小写字符,并在字符中间夹杂数字。
03
学用elif子判断语句
21
03 学用elif子判断语句
if语句与else语句结合使用,通常只用来判断条件“成立”或“不成立”两种情况。
如果要判断的条件超过两种,我们就需要使用“ elif 子判断语句”。
例程:用户输人喜欢的颜色,程序返回给用户可能喜欢的季节。
03 学用elif子判断语句
程序运行效果如下图:
03 学用elif子判断语句
编程练习:
实现下面的要求:苹果3元/斤、橘子2元/斤、李子1.5元/斤、 西瓜1元/斤,用户输入水果名,程序就会告诉用户该水果售价多少。
03 学用elif子判断语句
程序运行效果如下图:
04
两种循环语句的差别
04 两种循环语句的差别
27
while循环语句可以形成无限循环,而for循环语句必须指定循环次数。
例子:要求在屏幕上打印5行星号,第1行1个星号,第2行2个星号……直到第5行5个星号。
使用while循环语句
(4行代码):
使用for循环语句
(2行代码):
04 两种循环语句的差别
28
通过对这两种循环语句差别的比较,我们可以得出这样的结论:
在知道循环次数的情况下,我们大多会使用for循环语句;
在不知道会循环多少次的情况下,我们一般会使用while循环语句。
29
打开神秘宝箱,查看里面的“神秘奖品” !
—— Python常用模块。
课堂总结
判断密码正误
简单的密码正误判断
两种循环语句的差别
循环进行密码判断
学用elif子判断语句
掌握if判断语句的运用
掌握while循环、for循环、break循环终止语句的运用
掌握elif子判断语句的运用
两种循环语句的选用
THANKS