从零开始学习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 ...
随机推荐
- Shell脚本学习 - 运算符
继续shell脚本学习.上一篇是基本数据类型和语法的总结,这一篇是运算相关的操作. 运算符 bash不支持简单的数学计算,需要依赖其他命令实现. expr可以代为实现. # 表达式一般这么写 ` + ...
- STM8L052低功耗模式
Stm8L系列单片机的低功耗有五种模式: § wait模式 § Lowpower run模式 § Lowpower wait模式 § Active-haltwith full RTC模式 § Halt ...
- 一小时学会ECMAScript6新特性(一)
ECMAScript 简介 简称es,是一套标准,javascript就是使用这套标准的语言.主流的浏览器使用的是ECAMScript5,ECAMScript6(ECAMScript2015)是一涛新 ...
- WebStorm重复代码快捷表达
一,问题 平时使用WebStorm时需要很多引用js,重复代码比较多,每次都要写很多次同样的代码,那么如何通过几个快捷键来简单的写出重复代码呢? 问题具体描述: 每次都要写两个script的重复: & ...
- sqlzoo:3
顯示1980年物理學(physics)獲獎者,及1984年化學獎(chemistry)獲得者. select yr,subject,winner from nobel ) ) 查看1980年獲獎者,但 ...
- C++ 用变量定义数组
较早的编译器是不同意这样做的,所以一些书籍比方以Tc解说的书本都说数组的下标不能是变量.在vc6.0下亦是如此. 只是在一些较新的编译器如dev c++已经支持了,例如以下代码不会报错 #includ ...
- Luogu 3384 【模板】树链剖分
题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 操作2: 格式 ...
- vue table-tree 组件
最近接到一个需要使用table-tree开发 百度的一圈.什么的都有.感觉不怎么靠谱.最后找到一个感觉挺 huo shi 先附上demo和代码地址: 代码地址:https://github.com/s ...
- cadence钻孔文件及光绘文件的生成
完成PCB布线之后,需要生成钻孔文件和光绘文件交给PCB厂家制作PCB板,下面总结详细方法!
- MVC编程模型
MVC 编程模型 MVC 是三个 ASP.NET 开发模型之一. MVC 是用于构建 web 应用程序的一种框架,使用 MVC (Model View Controller) 设计: Model(模型 ...