第三单元 开启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