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