从零开始学习PYTHON3讲义(七)条件分支和哥德巴赫猜想
《从零开始PYTHON3》第七讲
人生是由无数个选择组成,每个选择都有不同的限定条件。现在来说人生有点早是吧:)不过事实的确是这样的。
程序也充满着选择,满足不同的条件,则运行不同的运算。这些对不同运算的选择,则被称为分支,或者叫“条件分支”。
在Python中,最简单的条件分支是这个样子(伪代码):
if 条件:
满足条件时执行的分支
条件不满足时,或者条件满足、执行完分支之后,会继续从这里开始执行
用真实的代码来看个例子:
#当a的值大于3的时候,显示a的值
if a > 3:
print(a)
以上是if分支最简单的形式,完整的if分支使用伪代码表示是这样:
if 条件一:
条件一满足时执行
elif 条件二:
条件二满足(条件一不满足)时执行
elif 条件三:
条件三满足(条件一、二不满足)时执行
...
else:
所有分支条件均不满足时执行
在其它的编程语言中,if分支通常最多只处理两种分支条件,更多的分支要使用if语句的嵌套,或者switch等命令。在python中这些不同的处理方式都被合并到了if分支语句。其中主要的体现就是elif子句,elif实际是“else if"的缩写,这非常像if的嵌套使用,但又更简单易用。
if语句完整的语法包含很多个部分,elif只是其中的一个部分,所以叫“子句”。每个elif子句对应一个分支条件和吻合条件后的分支。在一个if分支结构中,elif子句可以有很多个,这样就可以用于对应很多种不同的分支条件。但是最初的if和最后的else只能有一个。
除了伪代码,我们还可以用流程图来描述if语句的执行走向,从而加深印象:
相信你已经有了概念了。下面是一个真实代码的例子:
#条件分支示例
#作者:Andrew
#输入
wallet=float(input("请输入钱包里的现金总数:"))
if wallet > 1000.0:
print("今晚去吃大餐.")
elif wallet > 500.0:
print("简单吃一顿,然后去迪厅.")
elif wallet > 100.0:
print("去吃个快餐,然后看场电影.")
else:
print("回家看看有没有剩饭,然后看电视吧.")
上面程序中,首先请用户输入一个数字,代表钱包中的现金总数,然后使用float函数把输入变换为浮点数。使用float类型是因为,表达的是现金的总数,当然可能包含小数部分。如果不使用float函数,输入的数据默认是字符串类型,这个我们前面已经讲过了。
随后根据现金的数额,显示不同的提示。提示信息仅供娱乐,这里是为了说明if语句的基本使用方式。你主要需要理解的部分就是,这些不同信息,是根据不同的分支条件决定的。
在if语句中,真正控制程序走向的正是程序中所给出的条件,通常以条件表达式的方式存在。表达式的运算结果只有“真”、“假”两种形式。这是逻辑类型,或称bool(布尔)类型,属于数字类型的子类型,我们在第五章中讲过了。
我们当时还讲过,采用bool类型的原因之一是因为现代数学体系上完备的概念和体系。今天我们就在这个基础上再进一步讲述逻辑运算,或称bool(布尔)运算。
逻辑运算(布尔运算)
bool类型只有两个可能值,所以常见的bool运算方式也并不多,最常用的就是下面三种:
not 否定操作,比如下面两条语句,从逻辑上是相同的:
if not 性别=="女": if 性别=="男":
and 逻辑“与”操作:and操作符两边的条件,必须都为真,结果才是“真”,否则结果是“假”,例如:
if 性别=="男" and 16<年龄<25:
#当性别为男,同时年龄在16到25岁之间(不包含16岁和25岁)时,执行
or 逻辑“或”操作:or操作符两边的条件,只要有一个是“真”,则结果就是“真”,全部为“假”,结果才是假,例如:
if 年龄<=16 or 年龄>=25:
print("条件不符")
#当年龄小于等于16岁,或者大于等于25岁,则显示“条件不符“
条件判断本来挺好用,为什么学这么复杂的布尔运算呢?我们来看一个例子你就会理解了:
假设某个男篮选秀,教练组提出了录取的三个基本条件:
- 男性
- 年龄大于16岁,小于25岁
- 身高超过2.1米
如果只使用逻辑判断,不使用逻辑运算表达式,我们可能得到这样的程序代码(伪代码):
if 性别=="男":
if 16<年龄<25: #注意这里使用了连续判断(if语句嵌套)
if 身高>2.1:
print("符合条件!")
else:
print("不符合条件!")
else:
print("不符合条件!")
else:
print("不符合条件!")
对比如果使用逻辑运算的代码:
if 性别=="男" and 16<年龄<25 and 身高>2.1:
print("条件符合!")
else:
print("条件不符合!")
使用逻辑运算的代码干净、清晰,不易出错。不过在初学的时候,你会感觉有点“烧脑”
从零开始学习PYTHON3讲义(七)条件分支和哥德巴赫猜想的更多相关文章
- 从零开始学习PYTHON3讲义(一)认识Python
课程名称 从零开始PYTHON3 课程长度 15讲 适用年龄 15-20岁(初三-大一) 本讲名称 认识Python 时长 90分钟 教学内容分析 Python是时下最流行的计算机编程语言之一.本课程 ...
- 从零开始学习PYTHON3讲义(十三)记事本的升级版:网络记事本
<从零开始PYTHON3>第十三讲 网络编程的火热和重要性这里就不多说了,我们直接来看看Python在互联网编程方面的表现. Python有很多网络编程的第三方扩展包,这里推荐一个我认为最 ...
- 从零开始学习PYTHON3讲义(五)while循环和棋盘麦粒问题
<从零开始PYTHON3>第五讲 上一节课重点学习了字符串,并且传递了一个重要的理念,就是程序要对开发人员自己和用户都足够友好.在这个过程中,利用字符串给出充分.完整.准确的提示是非常重 ...
- 从零开始学习PYTHON3讲义(三)写第一个程序
<从零开始PYTHON3>第三讲 本页面使用了公式插件,因博客主机过滤无法显示的表示抱歉,并建议至个人主页查看原文. 我见过很多初学者,提到编程都有一种恐惧感,起源是感觉编程太难了.其 ...
- 从零开始学习PYTHON3讲义(十二)画一颗心送给你
(内容需要,本讲使用了大量在线公式,如果因为转帖网站不支持公式无法显示的情况,欢迎访问原始博客.) <从零开始PYTHON3>第十二讲 上一节课我们主要讲解了数值计算和符号计算.数值计算的 ...
- 从零开始学习PYTHON3讲义(十)自己做一个“电子记事本”
<从零开始PYTHON3>第十讲 截至上一讲,我们已经完成了Python语言的基本部分.我们用了三讲来讨论Python语言的控制结构,用了两讲来介绍Python的基本数据类型.可以说仅就语 ...
- 从零开始学习PYTHON3讲义(九)字典类型和插入排序
<从零开始PYTHON3>第九讲 第六讲.上一讲我们都介绍了列表类型.列表类型是编程中最常用的一种类型,但也有挺明显的缺陷,比如: data = [5,22,34,12,87,67,3,4 ...
- 从零开始学习PYTHON3讲义(八)列表类型跟冒泡排序
<从零开始PYTHON3>第八讲 前面我们见过了不少的小程序,也见过了不少不同类型的变量使用的方法.但目前我们涉及到的,还都是单个的变量和单个的立即数.以变量来说,目前我们见到的,基本都 ...
- 从零开始学习PYTHON3讲义(二)把Python当做计算器
<从零开始PYTHON3>第二讲 上一讲我们说过了如何启动Python IDLE集成开发学习环境,macOS/Linux都可以在命令行执行idle3.Windows则从开始菜单中去寻找ID ...
随机推荐
- <玩转Django2.0>读书笔记:邮件和分页
1. 发送邮件 # settings.py设置 # 邮箱设置 EMAIL_USE_SSL = True # 邮件服务器 EMAIL_HOST = 'smtp.qq.com' # 邮件服务端口 EMAI ...
- LOJ.6435.[PKUSC2018]星际穿越(倍增)
LOJ BZOJ 参考这儿qwq. 首先询问都是求,向左走的最短路. \(f[i][j]\)表示从\(i\)走到\(j\)最少需要多少步.表示这样只会\(O(n^2\log n)\)的= =但是感觉能 ...
- Python3系列__01Python安装
Python和Java一样是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.所以你在一个平台上面上写的代码在另一个平台仍能正常运行. 要学习Python编程,你需要做的就 ...
- VS中自定义类模版
以下为vs2017 专业版,安装目录在D盘 安装路径: D:\Program Files (x86)\Microsoft Visual Studio\\Professional\Common7\IDE ...
- VS2017 生成事件去除未修改项目
1.右键“解决方案”→“配置管理器” 2.列“生成”,反勾选无需编译的项目 3.点击“确定”,重新编译即可跳过未勾选的项目.
- IIS7配置伪静态把后缀名映射为html
1.在IIS新建站点.[ 创建的时候不用去选择版本和模式,默认即可 ] 2.选中站点,切换到功能试图,找到“处理程序映射",双击之后,在打开窗口右侧的操作栏目下做如下设置: 1) 右边&qu ...
- Linux 管理进程
探查进程 参数 描述 -A 显示所有进程 -N 显示与指定参数不符的所有进程 -a 显示除控制进程(session leader1)和无终端进程外的所有进程 -d 显示除控制进程外的所有进程 -e 显 ...
- 怎么过滤
replace(str, " ", ""); 就是这么简单
- React 之 JSX
开发完了一个项目了才回来研究React 一系列的技术,算是对自己的一个提高吧,也是小公司程序员的无奈. JSX是什么? JSX是javascript的语法的扩展. 为什么使用JSX? 1.React ...
- python Ajax
Ajax一.准备知识JSON1.什么是json JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSO ...