计算机软件之所以能够对不同的情况进行不同的处理,就是我们在编码的时候,通过逻辑控制语句,告诉软件在不同的情况下应该做什么处理。

比如我们在登录的时候,那么当你输入正确的账号密码和错误的账号密码,完全是两种处理方式。

这就是我们常说的逻辑分支,中间的菱形表示逻辑条件判断,当满足不同的条件的情况下,程序会走不同的分支。

那么在计算机语言中,怎么决定条件的走向呢?那么主要用到我们常用的来逻辑相关的运算符,包括比较运算符、逻辑运算符和成员运算符。详情请见 运算符 小节。

也就是所有运算结果为 True 或 Flase 这类布尔值的 表达式、函数、方法等,都可以作为逻辑判断中的条件。

单条件的逻辑判断语句

在 Python 中,一条完整的逻辑判断语句,除了表达式之外,还需要用到几个关键字if...else...。这几个关键字都很好理解如果..否则...。如果条件成立,执行什么语句,否则执行另外的什么语句。用伪代码表示如下:

if 条件:

如果条件成立(结果为True),执行这里的语句块

else:

如果条件不成立(结果为False),执行这里的语句块

注意缩进

到目前为止,我们写的语句都是逐行执行。但是从现在开始,就涉及到缩进的概念了。此时建议大家使用 Pycharm 等编码工具,将会更容易处理缩进。

Python 中,用同一缩进来表示同一层级的语句体。如果缩进不同,则表示内部语句的意思。

在 if...else... 语句中,if 下面的缩进表示这些语句从属于 if 语句,属于包含在 if 语句中的子语句。在其他语言中,一般用大括号表示。

Python 中使用缩进来标识语句块,虽然很优雅,初学者却容易混淆。不过并不用太过担心,多写写自然就熟悉了。

我们用代码模拟实现上面图中的登录过程:

user = input('请输入密码:')

pwd = input('请输入密码:')

if user == 'admin' and pwd == '123':

print('登录成功')

else:

print('登录失败')

运行上面的程序,当你输入的账号为admin并且密码为123的时候,会打印登录成功,否则打印登录失败。

我们看到,上面的语句执行后,要么打印登录成功,要么打印登录失败。也就是说 if...else... 中 if 和 else 所包含的语句,只会执行一次,要么执行 if 中的,要么执行 else 中的,不会两块都执行。

多条件的逻辑判断语句

上面 if...else... 只能执行一个条件的情况,但是在很多时候,我们可能会有很多的条件。那么对于多条件的判断情况,我们需要怎么处理呢?Python 中提供了elif的关键字。

# 看一个例子:

# 输入一个成绩

# 当成绩大于80打印优秀

# 60-80之间打印及格

# 60以下打印不及格

score = int(input('请输入一个成绩:'))

if score >= 80:

print('优秀')

elif score >= 60:

print('及格')

else:

print('不及格')

# 最后的 else 也可以替换为 elif score < 60

在这里,我们看到多个条件的情况,但是要注意,虽然我们写了这么多的语句,但是在整个 if...elif...else...语句体中,只会有一块语句被执行。

if...elif...else...,这就是 if 的完全体了,这一整套的语句块,可以叫做 Python 中的 if 语句。在 Python 的 if 语句中,if 关键字只能出现一次,出现多次表示是多个 if 语句了;elif 可以没有也可以有无数多个(0 到 n);else 用来表示当所有条件不成立的情况,可以没有,有的话只能有一个(0 或 1)

if 条件1:

如果条件1成立,执行这里的语句

elif 条件2: # 如果条件1不成立,那么进行条件2的判断

如果条件2成立,执行这里的语句

else:

如果上面的条件全部都不成立,执行这里的语句

单变量的条件

在 if 语句中除了用逻辑表达式来表示条件外,还有一种情况可以用来表示条件。那就是变量是否存在有效的值,如果有有效的值,则表示 True,否则表示 False。看下面的例子:

>>> a = 0

>>> if a:

print('a 具备有效值') # 不用打印任何内容,因为 if a, 此时条件不成立

>>> b = 15

>>> if b:

print('b 具备有效值')

b 具备有效值 # b 不等于 0,if b,此时条件成立

除此外,当变量单独作为条件时,为 False 的情况如下,其他情况都为 True

类型

为 False 的情况

int

当变量值为 0

str

当变量值为 '' 空字符串时,注意这里是空字符串,不是带空格的字符串

list

当变量值为 [] 空列表

tuple

当变量值为 () 空元组

dict

当变量值为 {} 空字典

set

当变量值为 set() 空集合

None

当变量值为 None

除了表中所列的情况,当变量值为其他值时,则表示条件成立。

逻辑判断语句的概念比较简单,但是用的时候,要注意条件如何确定,不同条件下执行什么语句。可以先用中文的形式写出伪代码,再转换为代码。

比如这样一个练习:

输入一个整数,如果此数为0,则输出”石头”,如果此数为1,则输出“剪刀”,如果此数为2,则输出“布”,如果为其它,则输出“错误”。

可以先用伪代码写出思路:

输入一个变量 num

把 num 转换为 int

如果 num 为 0:

输出石头

如果 num 为 1:

输出剪刀

如果 num 为 2:

输出布

以上条件都不成立时:

输出错误

通过伪代码,理出思路,然后再转换为代码就容易多了。不要一上来就立马写代码,先理思路最重要。否则,遇到逻辑复杂的时候,会越绕越晕。切记切记!!!

本节练习:(题目来源部分网络收集)

输入一个int型的数据,判断这个数是否能被2整除,如果能被2整除,那么输出“这个数是偶数”,否则输出“这个数是奇数”。

输入一个年份,判是闰年还是平年(能整除4、400,不能整除100)。举例:1000不是闰年,2000是一个闰年,1996年是闰年,1998不是。

现在有一个银行保险柜,有两道密码。 想拿到里面的钱必须两次输入的密码都要正确。 如果第一道密码都不正确,那直接把你拦在外面; 如果第一道密码输入正确,才能有权输入第二道密码。 只有当第二道密码也输入正确,才能拿到钱!

输入两个整数,放入到a与b变量中去,如果a>=b就将a与b中的值进行交换,否则就不交换。目的就是要让a中放的值总是小于或等于b中的数,输出。

输入三个int型的数据,放入到a,b,c三个变量中去,使用条件结构与交换逻辑将这三个变量中的值从小到大排列。

输入一个三位整数,判断其是不是降序数如: 531是降序数 百位>十位>个位。

下面是一个小游戏设计,你可以继续写下去:

# 游戏角色属性

roles = ['游侠', '剑客']

role = ''

money = 100 # 初始金钱

prestige = 0 # 江湖威望

hp = 100 # 初始血量

atk = 10 # 初始攻击

i = input('请选择你的角色:\n1. 游侠\n2. 剑客\n')

if i == '1':

print('你成为了一名游侠!')

role = roles[0]

elif i == '2':

print('你成为了一名剑客!')

role = roles[1]

else:

print('没有你要选择的职业!默认为你选择了游侠!')

role = roles[0]

i = input('现在你进入了江湖,请选择你的下一步行动:\n1.出门左拐\n2.出门右拐')

if i == '1':

j = input('前面出现了一幕不好的场景,疑似地主家的傻儿子带着一帮狗腿子在调戏良家妇女,你打算?\n1.英雄救美\n2.装作没看见')

if j == '1':

print('你上前打跑了地主傻儿子和狗腿子,但是由于对方人多,你也受了伤!')

prestige += 1 # 江湖威望 +1

hp -= 5 # 血量 -5

elif j == '2':

print('你选择装作什么都没看见。由于你的懦弱,严重打击了你江湖行走的信心!')

prestige -= 2

elif i == '2':

...

本节练习答案

请先做完练习,并理解后再看下一篇!

python中if控制语句_Python 极简教程(十二)逻辑控制语句 if else相关推荐

  1. python导入模块教程_Python 极简教程(二十四) - 导入模块

    每种语言都有一些现成的模块可以调用,这些模块提供各种各样的功能,比如 time 模块提供关于时间的处理,re 模块提供正则表达式的函数, os 模块提供系统级别的操作等. 这些模块存在于 Python ...

  2. python竖线怎么打_Python 极简教程(五)输入输出

    输入函数 input() 从键盘接收输入的函数是 input(),名称后面带括号,叫做函数调用,必须有括号,括号同样用来为函数接收参数. input() 函数运行后会展示括号中传入的内容,然后光标会在 ...

  3. 深度学习入门极简教程(二)

    深度学习入门极简教程(二) 摘要: 现在的人工智能,大致就是用"硅基大脑"模拟或重现"碳基大脑的过程".那么,在未来会不会出现"碳硅合一"的 ...

  4. python极简教程_Python 极简教程(六)运算符

    运算符,我们日常生活中使用的加减乘除,都是运算符的一种.当然这种一般我们称为算术运算符,用于处理数字运算的. 但是在计算机语言中,还有很多的运算符.用于处理不用的情况. 主要有以下几类: 算术运算符 ...

  5. python代码教程-【Python】Python3纯代码极简教程

    1 #!/usr/bin/python3 2 3 ''' 4 Python3.6.x简单教程5 6  示例.注释7  交互式和脚本式编程8  变量类型9  数字(Number)10  字符串 ...

  6. python极简教程_Python 极简教程(一)前言

    现在 Python 用处很多,学的人也很多,其流行程度自不必说.但是很多人学 Python 的时候都遇到过问题,特别对于非计算机专业毕业的人来说. 现在的教程非常多,但是绝大部分对于初学者都不够友好. ...

  7. for循环里的if语句中break_Go语言极简教程 - 第五篇 控制语句

    if语句 语法 IfStmt = "if" [ SimpleStmt ";" ] Expression Block [ "else" ( I ...

  8. Python 从入门到爬虫极简教程

    为什么要学 Python 数据分析需要多个阶段, 抓取数据仅是一个环节, 数据需要不断采集, 更新, 清洗, 分析, 可视会展示等多个阶段, 这些过程中 Python 都能应对自如. 属于性阶适中的工 ...

  9. Python 从入门到爬虫极简教程 1

    Python 爬虫与数据分析 你学的太多,练习太少. -- 古典 抓取数据但不用 Python 不编码是第一选择 八爪鱼采集器 Octoparse 特点: 内嵌浏览器, 可视化定位, 可提取 Java ...

最新文章

  1. 独家 | 2021年打破了零日黑客攻击的记录
  2. javascript 中的getter,setter
  3. Kafka是什么,JMS是什么,常见的类JMS消息服务器,为什么需要消息队列(来自学习笔记)
  4. hadoop-hdfs-存储模型-架构模型-角色介绍
  5. Replace Type Code with Class(以类取代类型码)
  6. 荣耀10i高清渲染图曝光:后置三摄+高颜值渐变色机身
  7. SpringCloud工作笔记051---SpringCloud打包部署流程
  8. VScode使用Git拉取代码到本地提示“在签出前,请清理存储工作树”
  9. linux下svn服务器的安装配置和使用
  10. 解决Sql中DIstinct与Order By共同使用的冲突问题
  11. mysql连接本地数据库失败_“sql server”连接本地数据库失败怎么办?
  12. java字节码查看器_jclasslib 64位
  13. 如何用python编写财务记账软件_python实现日常记账本小程序
  14. iOS 审核 苹果登陆失败
  15. 2021 年 VS Code 主题推荐
  16. mysql中if多重判断使用
  17. Windows 7 64位版本的内存错误导致蓝屏死机(Blue Screen to Death)
  18. 小武与SSD的相遇笑死我了!
  19. 终端溯源图构建工具SPADE专题-1 SPADE工具安装
  20. jquery鼠标经过水平180度翻转效果

热门文章

  1. leetcode题解104- 二叉树的最大深度
  2. A water problem (hdu-5832)
  3. 畅通工程(自己写的BFS,但后面想了下并查集更好更快)
  4. 02_线性表的顺序表示和实现
  5. bat转exe工具 Bat To Exe Converter v2.4.7 绿色版
  6. mac android手机调试,mac os开发android应用通过usb真机调试
  7. 在计算机系统中 外存储器必须通过,大学计算机基础第4章作业.doc
  8. python自己创建模块引用失败_详解Python import方法引入模块的实例 Python怎么import自己写的模块...
  9. openwrt打印机支持列表_共享打印机的三种安装连接方法
  10. php引入odbc模块,php如何用odbc调用存储过程?