热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

动手学python系列之流程控制:条件判断和循环控制

上一篇文章我们简单的介绍了常见的数据类型,字典及集合的定义及其增删改查,接下来,我们将学习python程序中的分支结构和循环结构。和其他

上一篇文章我们简单的介绍了常见的数据类型,字典及集合的定义及其增删改查,接下来,我们将学习python程序中的分支结构和循环结构。

和其他编程语言一样,按照执行流程来划分,Python程序可以划分为三大结构,即顺序结构,循环结构和分支结构,

1、python的顺序结构就是让程序按照从头到尾的顺序依次执行每一条代码,不重复也不跳过执行任何代码;

2、Python的分支结构就是按照一定的条件选择去执行代码,跳过没用的代码,执行有用的代码。

3、Python中的循环结构指的是程序在特定条件下执行同一段代码,直到条件不在满足时跳出。

顺序结构很好理解,程序从前向后执行即可,在这里重点讲解分支结构和循环结构。

Part.1 分支结构

在日常生活中,我们通常会对未来做一个假设的预判,比如说假如明天天气晴朗,我就去爬山,否则就去床上打游戏,这种以 “如果 ”句式表达的逻辑结构,就是一种条件判断,根据不同的假设,做出不同的行为。

条件判断的核心在于先提出一个假设条件,如果条件成立,则执行什么操作,如果条件不成立,则执行其他操作。

在python中,这样的条件控制语句对应的关键字为 “ if “,常见的结构有if语句,if else 语句和 if elif else语句,其具体的语法和执行流程如下。

if结构是最简单的分支结构,通过条件表达式判断真假,为true,执行代码块,否则跳过执行下一段代码,结构如下图。

图片

if结构中,代码的执行过程为:

图片

if else 结构是比较常见的结构,通过条件表达式判断真假,为true,执行代码块1,为false,执行代码块2,执行完成之后,执行接下来的代码。

图片

if else语句的常见形式为:

if condition_1:statement_block_1
elif condition_2:statement_block_2
else:statement_block_3

在执行上述语句时,

如果 "condition_1" 为 True 将执行 "statement_block_1" 块语句

如果 "condition_1" 为False,将判断 "condition_2"

如果"condition_2" 为 True 将执行 "statement_block_2" 块语句

如果 "condition_2" 为False,将执行

"statement_block_3"块语句

if elif else 结构中,Python 会从上到下逐个判断表达式是否成立,一旦遇到某个成立的表达式,就执行后面紧跟的语句块;不再执行剩下的代码,如果所有的表达式都不成立,就执行 else 后面的代码块。

图片

如下图展示,根据工资的不同情况,输出不同的表情包,

图片

分支结构语法格式

“表达式”可以是一个单一的值或者变量,也可以是由运算符组成的复杂语句,if else 能判断它是否成立(true或false)。

“代码块”由具由相同缩进量的若干条语句组成。

if、elif、else 语句的最后都有冒号:

if中常见的运算操作符有:

图片

对于不同的数据类型,其真假情况如下:

图片

【if结构小测试】执行如下代码,判断1~7之间的奇数和偶数


a = 1
while a <7 :if (a % 2 &#61;&#61; 0) :print ( a , "is even" )else :print ( a , "is odd" )a &#61; a &#43; 1

代码执行结果为&#xff1a;

图片

【实例】判断是否为酒后驾车

如果规定&#xff0c;车辆驾驶员的血液酒精含量小于 20mg/100ml 不构成酒驾&#xff1b;酒精含量大于或等于 20mg/100ml 为酒驾&#xff1b;酒精含量大于或等于 80mg/100ml 为醉驾。先编写 Python 程序判断是否为酒后驾车。

【思路】酒驾的临界标志为20mg/100ml&#xff0c;醉驾的临界值为80mg/100ml&#xff0c;两个临界值为分类点&#xff0c;根据酒精含量来判断是否构成酒驾。具体流程图如下&#xff1a;

图片

代码实现&#xff1a;

#if elif else测试sine &#61; int(input("输入驾驶员每 100ml 血液酒精的含量&#xff1a;"))if sine <20: print("驾驶员不构成酒驾")else: if sine <80: print("驾驶员已构成酒驾") else: print("驾驶员已构成醉驾")

运行结果如下&#xff1a;

当输入10 时&#xff1a;

图片

当输入1000时&#xff1a;

图片

Part.2循环结构

Python中的循环结构有for循环和while循环&#xff0c;在表达式为真的情况下&#xff0c;会重复执行相同的代码&#xff0c;循环结构图如下&#xff1a;

图片

while循环和for循环的区别在于&#xff0c;

图片

while循环

while循环的语法格式为&#xff1a;


while 条件表达式&#xff1a;代码块

其执行的具体流程为&#xff1a;首先判断条件表达式的值&#xff0c;其值为真&#xff08;True&#xff09;时&#xff0c;则执行代码块中的语句&#xff0c;当执行完毕后&#xff0c;再回过头来重新判断条件表达式的值是否为真&#xff0c;若仍为真&#xff0c;则继续重新执行代码块...如此循环&#xff0c;直到条件表达式的值为假&#xff08;False&#xff09;&#xff0c;才终止循环。

while循环结构图如下&#xff1a;

图片

【while循环小测试】如何计算1到100的总和呢?

n &#61; 100sum &#61; 0
counter &#61; 1
while counter <&#61; n :sum &#61; sum &#43; countercounter &#43;&#61; 1print ( "1 到 %d 之和为: %d" % (n , sum) )

运行结果为&#xff1a;

图片

for循环

for循环可以用于遍历任何可迭代对象&#xff0c;比如说列表字符串等&#xff0c;

for 迭代变量 in 字符串|列表|元组|字典|集合&#xff1a; 代码块

其具体的执行流程为&#xff0c;迭代变量用于存放从序列中读取出来的元素&#xff0c;然后迭代变量参与代码块的运行&#xff0c;代码块是指具有相同缩进格式的多行代码&#xff0c;用于执行for循环中的操作。

其流程图如下&#xff1a;

图片

【if循环小测试】计算1到100之和

代码实现&#xff1a;

n &#61; 0
sum &#61; 0
for n in range(0,101):# n 范围 0-100sum &#43;&#61; n
print ( "1 到 %d 之和为: %d" % (n , sum) )

运行结果为&#xff1a;

图片

break 和 continue 语句及循环中的 else 子句

break关键字在循环中的作用在于跳出循环&#xff0c;执行其他的代码&#xff1b;执行流程图如下&#xff1a;

图片

当在while循环中执行break和continue时&#xff0c;

图片

continue关键字跳过当前的这次循环&#xff0c;直接开始下一次循环。执行流程图如下&#xff1a;

图片

当在for循环中执行continue和break时&#xff0c;

图片

小贴士

break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止&#xff0c;任何对应的循环 else 块将不执行。

continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句&#xff0c;然后继续进行下一轮循环。

【break和continue比较例子】


#break和continue结构
for letter in &#39;come on, man,&#39; : # 第一个实例if letter &#61;&#61; &#39;n&#39; : # 字母为 n 时跳过循环breakprint ( &#39;当前字母 :&#39; , letter )var &#61; 10 # 第二个实例
while var > 0 :var &#61; var - 1if var &#61;&#61; 5 : # 变量为 5 时跳过输出continueprint ( &#39;当前变量值 :&#39; , var )
print ( "Good bye!" )

第一个例子中&#xff0c;遇到字母 n 时&#xff0c;跳出循环&#xff0c;所以只输出 ‘come o’&#xff0c;在第二个例子中&#xff0c;遇到5&#xff0c;跳过&#xff0c;执行接下来的循环&#xff0c;所以输出结果中&#xff0c;没有5&#xff0c;代码运行结果为&#xff1a;

图片

代码集合&#xff1a;

# -*- coding: utf-8 -*-
"""
&#64;Time : 2021/8/17 20:18
&#64;Author : LYP
&#64;FileName: IF_python.py
&#64;SoftWare: PyCharm
"""#if小测试
a &#61; 1
while a <7 :if (a % 2 &#61;&#61; 0) :print ( a , "is even" )else :print ( a , "is odd" )a &#61; a &#43; 1#if elif else测试
sine &#61; int(input("输入驾驶员每 100ml 血液酒精的含量&#xff1a;"))
if sine <20:print("驾驶员不构成酒驾")
else:if sine <80:print("驾驶员已构成酒驾")else:print("驾驶员已构成醉驾")#求1到100的和&#xff0c;用while结构
n &#61; 100sum &#61; 0
counter &#61; 1
while counter <&#61; n :sum &#61; sum &#43; countercounter &#43;&#61; 1print ( "1 到 %d 之和为: %d" % (n , sum) )#求1到100的和&#xff0c;用for结构
n &#61; 0
sum &#61; 0
for n in range(0,101):# n 范围 0-100sum &#43;&#61; n
print ( "1 到 %d 之和为: %d" % (n , sum) )#break和continue结构
for letter in &#39;come on, man,&#39; : # 第一个实例if letter &#61;&#61; &#39;n&#39; : # 字母为 n 时跳过循环breakprint ( &#39;当前字母 :&#39; , letter )var &#61; 10 # 第二个实例
while var > 0 :var &#61; var - 1if var &#61;&#61; 5 : # 变量为 5 时跳过输出continueprint ( &#39;当前变量值 :&#39; , var )
print ( "Good bye!" )

当我们掌握了python语言中的三大结构时&#xff0c;就能够设计很多有趣的代码了&#xff0c;

【py小测试1】猜拳小游戏

问题介绍&#xff1a;猜拳小游戏是常见的娱乐活动&#xff0c;石头&#xff0c;剪刀&#xff0c;布之间的相互关系来确定游戏的输赢。

思路分析&#xff1a;我们和电脑玩猜拳游戏&#xff0c;首先&#xff0c;我们输入石头&#xff0c;剪刀&#xff0c;布之中的一种&#xff0c;且不能输入其他字符&#xff0c;要求输入结束字符&#xff0c;其次&#xff0c;电脑出拳可以用随机数来表示&#xff0c;即定义一个数组包括石头剪刀布&#xff0c;然后随机数1&#xff0c;2&#xff0c;3分别对应数组中的元素&#xff0c;电脑生成1&#xff0c;2&#xff0c;3随机数&#xff0c;来表示电脑出拳&#xff0c;最后&#xff0c;根据电脑出拳和我们出拳之间的关系来判断输赢&#xff0c;若相同&#xff0c;则为平&#xff0c;否则&#xff0c;输出输赢的一方。

# -*- coding: utf-8 -*-
"""
&#64;Time : 2021/8/18 23:48
&#64;Author : LYP
&#64;FileName: pyTest.py
&#64;SoftWare: PyCharm
"""
import randomwhile 1 :s &#61; int ( random.randint ( 1 , 3 ) )if s &#61;&#61; 1 :ind &#61; "石头"elif s &#61;&#61; 2 :ind &#61; "剪刀"elif s &#61;&#61; 3 :ind &#61; "布"m &#61; input ( &#39;输入石头&#xff0c;剪刀&#xff0c;布&#xff0c;输入end结束游戏&#xff1a;&#39; )blist &#61; [ &#39;石头&#39; , &#39;剪刀&#39; , &#39;布&#39; ]if (m not in blist) and (m !&#61; &#39;end&#39;) :print ( "输入错误&#xff0c;重试&#xff1a;" )elif (m &#61;&#61; &#39;end&#39;) and (m not in blist) :print ( ind )print ( "\n游戏退出" )breakelif m &#61;&#61; ind :print ( "平" )elif (m &#61;&#61; &#39;石头&#39; and ind &#61;&#61; &#39;剪刀&#39;) or (m &#61;&#61; &#39;剪刀&#39; and ind &#61;&#61; &#39;布&#39;) or (m &#61;&#61; &#39;布&#39; and ind &#61;&#61; &#39;石头&#39;) :print ( "电脑出了&#xff1a;" &#43; ind &#43; "&#xff0c;你赢了&#xff01;" )else :print ( "电脑出了&#xff1a;" &#43; ind &#43; "&#xff0c;你输了&#xff01;" )

运行结果为&#xff1a;

图片


推荐阅读
author-avatar
淘气小顽童刘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有