社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

《假如编程是魔法之零基础看得懂的Python入门教程 》——(五)我的魔法竟然有了一丝逻辑

1_bit • 4 年前 • 518 次点击  

学习目标

  1. 了解魔法世界中的结构表现——缩进
  2. 了解魔法世界的逻辑判断——if
  3. 了解魔法世界的多次逻辑判断——ifelse嵌套
  4. 了解魔法世界中的逻辑运算——且 and 与或 or

推荐

1. 《备受好评的看得懂的C语言入门教程》

目录

第一篇: 《假如编程是魔法之零基础看得懂的Python入门教程 》——(一)既然你选择了这系列教程那么我就要让你听得懂
第二篇: 《假如编程是魔法之零基础看得懂的Python入门教程 》——(二)魔法实习生第一步了解魔杖的使用
第三篇: 《假如编程是魔法之零基础看得懂的Python入门教程 》——(三)使用初始魔法跟编程魔法世界打个招呼吧
第四篇: 《假如编程是魔法之零基础看得懂的Python入门教程 》——(四)了解魔法百宝箱列表、字典及基本数据类型
第五篇: 《假如编程是魔法之零基础看得懂的Python入门教程 》——(五)我的魔法竟然有了一丝逻辑
第六篇: 《假如编程是魔法之零基础看得懂的Python入门教程 》——(六)精简魔法更强大
本系列教程将会以一种“魔法世界”的形式编写,欢迎各位支持。

欢迎大家关注公众号,公众号每满1024及1024倍数则会抽奖赠送机械键盘一份+IT书籍2份哟~并且公众号会更快更新哟。
在这里插入图片描述

一、了解魔法世界中的逻辑判断

在python中进行逻辑判断其实指的是流程控制,那什么是流程控制呢?流程控制指的是在编写代码时,有不同条件下需要执行的代码,满足该条件后将会执行这部分流程;这一部分流程可以是一条代码、空或多条代码。那我们的代码如何体现这个流程控制呢?其实在我们的程序运行中,会出现一些可能预计的情况,通过对这些情况的判定从而在某些情况出现时做响应;例如在做一台壁障小车时,判断前方是否有障碍物,若有则转弯或后退,其它情况则直走;在整个过程中,转弯和后退表示一个情况触发后需要响应的流程,其它情况则直走,这就是流程控制。从壁障小车的表现上看,则是有了逻辑;在魔法世界中,释放有逻辑的魔法就像一枚跟踪导弹,放出去必定命中敌人。

1.1 了解逻辑判断咒语——if关键字
if在python中是用来表示逻辑判断的关键字(关键字指系统中内定已有功能的字符组合,就像魔法中的咒语一样),使用if,在if后拼接触发的条件,则会在程序运行过程中触发指定的流程。现在我们来看一下以下示例:

if 1>10:
  • 1
  • 1

以上代码使用了if关键字,之后接上了一个条件,这个条件是1>10;我们现在先别管条件是怎么写,刚刚说了,条件满足后将会触发指定的流程。那 if 1>10: 的指定流程改如何编写呢?我们可以看一下这一行代码中有一个冒号,冒号的一般作用是解释说明,那在代码中是否也可以使用冒号用作一种类似于“解释说明”的作用?恭喜你,如果你这么想那就是猜对了。那我们就在1>10的时候就显示“1>10”吧,查看以下代码:

if 1>10:print("1>10")
  • 1
  • 1

在以上代码中整体的代码意思为,使用if关键字,判断1是否大于10,大于10则执行冒号后的代码 print("1>10") ;运行python文件:
在这里插入图片描述
发现什么都没有出现,这是为什么呢?因为1>10这个条件不成立,在一般情况下1是不可能大于10的;那修改条件为1<10,这个条件是正确的,1是小于10;运行python文件:

if 1<10:print("1<10")
  • 1
  • 1

运行结果:

在这里插入图片描述
成功显示了1<10,但是在该代码中并没有体现“当程序运行中触发某个条件”,那就改一下代码吧。在前几节中,我们学习了如何跟已经运行的程序进行对话,那就是使用input,使用input可以接收用户输入的值;那我们现在编写一个程序查看该程序是否大于10。

首先我们需要使用input魔法接收用户输入的值,并且使用一个变量存储该值:

a=input("请输入一个数值:")
  • 1
  • 1

随后使用a变量进行判断,查看是否小于10:

a=input("请输入一个数值:")
if a<10:print("a小于10")
  • 1
  • 2
  • 1
  • 2

我们运行代码,输入一个数10,结果发现了错误;这是博主我翻车了吗?当然是的,还好我有安全气囊。首先我们查看一下我们的魔法到底哪里错了:
在这里插入图片描述
以上错误提示中,告诉我们使用<号对数值进行判断,比较的两个值不能一个为字符串另外一个为整数。

怎么回事?难道我输入10不是数字?在python中当然不是数字呢,当前输入的10是一个字符串;可能你会一巴掌打我,并且说“10明明是数字,你是在忽悠我颠倒我的世界观吗?”。其实数字可以做为字符也可以作为数字,例如在一串字符串中“小明今年17岁了”,其中出现了数字17,那这个17是字符串还是数字?在我们脑海里它是个数字,我们觉得这个17是个数字是因为我们进行了逻辑判断,知道它是个量词;所有的这一切逻辑是基于我们所学过知识的基础上进行的判定,但计算机并没有学过,它并不能判断,只能通过我们所告诉它存在那个容器,这个容器是什么类型,数据存储进去后将会按照容器的类型从而改变值。

那接下来怎么做呢?这个很简单,只需要在判断的时候转换一下变量a的值就可以了:

a=input("请输入一个数值:")
if int(a)<10:print("a小于10")
  • 1
  • 2
  • 1
  • 2

以上代码中,在变量a与10进行判断时转变了a的表现,为整数形式;运行结果如下:
在这里插入图片描述
程序运行后输入了一个值2,判断条件成立,那么则运行 print("a小于10") 显示出 a小于10。

1.2 了解缩进的使用
想必有细心的魔法师还记得我之前说“流程可以是多条代码”,那这个多条代码怎么写呢?难道是:

if int(a)<10:print("a小于10")print("另外一句话")
  • 1
  • 1

不不不,这个是错的,我们需要使用一个叫做缩进的表示形式去凸显代码只能够的层次。例如:

a=input("请输入一个数值:")
if int(a)<10:
    print("a小于10")
    print("另外一句话")
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

就这?对的,就这。这就是缩进,缩进其实就是把版面给排得整齐了。查看如上代码,在if条件判断冒号后换了一行,并且在这一条代码 print("a小于10") 前添加了4个空格,并且也在这个流程内的代码 print("另外一句话") 前也添加了4个空格,一般4个空格指一个tab键自动输入的4个空格。

这样的编写形式非常容易凸显层次,例如if执行判断后,该执行多条代码,这属于共同流程内的代码需要整体的使用缩进进行控制层次。

二、了解魔法世界中的逻辑判断嵌套

在python代码编写中也可以使用嵌套的判断用于流程的控制。例如我们做一个“作弄人”的小魔法,输入3次,第一次输入一个数小于10,之后的每次输入都只能输入比上一次小的数,如果输错了则游戏结束。

2.1 if的嵌套使用
知道了游戏规则,那到底什么是嵌套呢?嵌套用最近流行的一个词来说就是“套娃”(2020年10月31日),用现实中的类似食物做一个比方就是一个碗上面又叠了一个,这就是嵌套。

在python代码中if的表现形式为:

if 条件:
	#一些代码
    if 条件:
       #一些代码
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

if的嵌套就是指在if条件判断的流程代码中再使用if判断。以上表现形式中使用了#号来修饰一些说明,这是什么东西?这是表示这是注释,注释表示这一行或者这一块代码的说明,方便你进行查看解释的标注,在通过解释器时并不会去翻译使用#号标注的内容。

为什么玩这个游戏需要使用if嵌套呢?我先跟你说一下我的实现思路:从键盘上输入一个值,我们接着判断这个值是否小于10,判断成功后进入正确的流程,在条件判断正确所需要执行的代码中继续使用input语句接收一个值,完成我们的二次输入,然后使用if继续判断这个值是否小于第一次输入的值,那么小于的话继续执行这个if语句判断正确的代码,那么接下来该怎么做呢?当然是跟之前一样的操作流程呢,添加一个input和一个if就可以了(当然也可以不用if嵌套也有别的方法,不过在此演示的示例是基于教学内容而设定)。

我们看一下正确的代码:

a=input("请输入一个数值:")
if int(a)<10:
    print("密码正确√")
    
    b=input("请输入一个数值:")
    if int(b)<int(a):
        print("密码正确√")
        
        c=input("请输入一个数值:")
        if int(c)<int(b):
            print("完全正确√")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

以上代码中首先使用一个变量a接收输入的值,之后判断是否小于10,小于10则执行指定流程内的代码,之后在该流程内重复与之前代码类似的编写;不同的有使用了一个变量b作为值的接收,随后判断变量b与变量a的值,变量a是第一次输入的值存储,游戏规定一定要小于上一次的值,所用用刚刚输入的值与上一次的值做对比;第三次的操作类似不在赘述,这样就完成了这个游戏的编写。
运行结果:
在这里插入图片描述

2.2 if不成立时 else来帮你
在2.1中我们的逻辑判断存在一丝缺陷,缺少了条件不成立时该执行代码什么代码。在python中提供了else关键字让我们解决该问题:

if 条件:
	#一些代码
else:
	#一些代码


    

  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

当条件成立时执行条件冒号后的对应流程代码,当条件不执行时执行else流程的代码。查看一示例:

a=input("请输入一个数值:")
if a<10:
	print("a小于10")
else:
	print("a不小于10")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

如果我们把else加到2.1的游戏中,代码可以写成:

a=input("请输入一个数值:")
if int(a)<10:
    print("密码正确√")
    
    b=input("请输入一个数值:")
    if int(b)<int(a):
        print("密码正确√")
        
        c=input("请输入一个数值:")
        if int(c)<int(b):
            print("完全正确√")
        else:
            print("就还差最后一个")
    else:
        print("再接再厉")
        
        
else:
    print("第一个密码就错了")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

以上代码在每一个if结构后都跟了一个else,在此要注意缩进的结构哟,每个if都是有自己的结构的,可以看以下图示说明:
在这里插入图片描述

运行结果如下:
在这里插入图片描述

2.3 多条件时怎么办?使用if elif轻松解决
现在假设我需要判断我输入的是1还是2或者是3从而执行不同的流程,这时可以使用if elif结构判断多个条件。

a=input("请输入一个数值:")
if int(a)==1:
    print("输入的是1")
elif int(a)==2:
    print("输入的是2")
else:
    print("是其它数")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

以上示例中,在使用了if判断值是否是1,使用两个等于号“==”表示判断左右两边的值是否相等,在python中使用一个等于“=”表示赋值;假设值等于1则输出 "输入的是1" ,假设需要判断是否输入的值等于2这时就需要使用elif,在elif后添加判断条件 int(a)==2: ,假设所有条件都不满足,那么则输出else部分的内容。运行结果如下:

在这里插入图片描述 当然也可以多个elif组合:

a=input("请输入一个数值:")
if int(a)==1:
    print("输入的是1")
elif int(a)==2:
    print("输入的是2")
elif int(a)==3:
    print("输入的是3")
elif int(a)==4:
    print("输入的是4")
else:
    print("是其它数")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2.3 使用逻辑运算 and 与 or 进行编程
假设在魔法世界,你释放了一个封印魔法封印一把锁,需要输入一个小于10的数并且能够被2整除才可以打开;这时需要判断的条件为2个,一个是小于10另外一个是除2余数等于0。这时我想用一个if语句就可以解决,这时就可以使用逻辑运算,查看示例:

a=input("请输入一个数值:")
if int(a)<10 and int(a)%2==0:
    print("打开盒子")
else:
    print("错了")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

以上示例中使用了and运算符,表示“与”;and运算发坐标为一个条件(表达式)右边也是一个条件,首先判断坐标条件a是否小于10,如果成立则判断右边a除2取余数是否为0,如果为0就显示“打开盒子”。在这and 表示左右两边条件都正确即为整个表达式 int(a)<10 and int(a)%2==0 正确,换句话说就是and的坐标和右边的判断都正确才是最终答案。再次用了运算发百分号%,百分号表示取余数。

运行结果如下:
在这里插入图片描述
如果使用 or 进行表达式运算则只需要一个表达式正确即可,意思就是左边和右边只要有一个条件成立就表示正确了:

a=input("请输入一个数值:")
if int(a)<10 or int(a)%2==0:
    print("打开盒子")
else:
    print("错了")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

假设我输入一个值100,它是大于10的条件1不成立,但是它却可以被2整数余数为0,在使用or的情况是会显示“打开盒子”的,若属于111则不行,因为条件都没满足。运行结果如下:
在这里插入图片描述
使用运算符and 和 or 并不只是能判断2个条件,也可以判断多个条件:

a=input("请输入一个数值:")
if int(a)<10


    
 and int(a)%2==0 and int(a)>4:
    print("打开盒子")
else:
    print("错了")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

也可以or 和 and 混合使用:

a=input("请输入一个数值:")
if int(a)<10 and int(a)%2==0 or int(a)==200:
    print("打开盒子")
else:
    print("错了")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

以上条件判断为 if int(a)<10 and int(a)%2==0 or int(a)==200: 表示a小于10并且除2余数为0,假设这一部分不满足则判断a是否等于200,由于 int(a)<10 and int(a)%2==0 int(a)==200 之间使用or进行连接,则表示两者之间即使左边全错,右边 int(a)==200 对了那么就正确,如果 int(a)<10 and int(a)%2==0 int(a)==200 全错则整个条件判断错误。运行结果如下:
在这里插入图片描述

四、总结

  1. 了解了在python中是使用缩进代表的层次结构
  2. 了解了使用if可以进行逻辑判断进行流程控制
  3. 了解了逻辑判断是可以嵌套的
  4. 了解了逻辑运算可以使用 and 和 or 进行逻辑运算
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/75066
 
518 次点击