Python自学入门(四):流程控制
创始人
2024-06-03 20:51:09
0

Python自学入门(一):环境安装
Python自学入门(二):数据类型和运算符
Python自学入门(三):数据类型详解

三、流程控制

程序的流程控制有三种结构:顺序结构、分支结构、循环结构。

顺序结构:是最简单的一种结构,即程序由上到下按顺序执行。

分支结构:根据条件执行不同的代码块

循环结构:重复执行某一段代码

3.1 分支

Python中的分支语句由if、elif、else组成。if语句可以单独使用,elif和else语句不能单独使用。

if语句的判断条件可以是一个布尔类型的变量或者表达式。

在这里插入图片描述

Python中使用缩进控制代码的层级。

numA=2
if numA%2==0:print("numA是偶数")

if-else有两个分支,if后的条件成立,执行if代码块,否则执行else

numB=2
if numB%2==0:print("numB是偶数")
else:print("numB是奇数")print("我是else")  #要注意缩进

if-elif是多分支,从上到下依次判断条件,找到条件成立的第一个分支,执行对应的代码。所有分支条件都不成立,则执行else。else不是必须的。

age = 16;
if age >= 18:print("成年人")
elif age >= 13:  #不需要写成 age >= 13 and age<18print("青少年")
elif age >= 7:print("少儿")
else :print("婴幼儿")

if语句可以嵌套

#定义三个数值变量a,b,c,利用分支结构找出三个数中最大的一个并输出
a=10;b=48;c=90
if a>b:if a>c:print('最大的数是a:',a)else:print('最大的数是c:',c)
else:if b>c:print('最大的数是b:',b)else:print('最大的数是c:',c)

【例题】判断一个年份是否是闰年:

I.如果这个年份能够被4整除,且不能被100整除,则这一年是闰年。例如,1996年是闰年,而相应的,1993年就不是闰年。

II.如果这个年份能够被100整除,则这个数必须要能被400整除,才是闰年。例如,2000年是闰年,1900年不是闰年。

year = 2020
if year % 4 == 0:if year % 100 != 0:print(year , "是闰年")elif year % 400 == 0:print(year , "是闰年")else:print(year , "不是闰年")
else:print(year ,"不是闰年");
year = 2000;
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:print(year ,"是闰年")
else :print(year, "不是闰年")

3.2 循环

在这里插入图片描述

3.2.1 while循环

while循环的语法如下:

while 循环条件:  #循环条件是一个布尔类型的表达式#循环体     

当循环条件true的时候进入循环,否则不进入循环。

circle = 1;
while circle <= 5 :print("跑第",circle , "圈")circle+=1
print("程序运行结束")

Python的循环可以加else语句,当循环条件为False时执行else

circle = 1;
while (circle < 5) :print("跑第",circle , "圈")circle+=1
else:print("循环结束")

如果循环变量控制的不正确,可能导致死循环:

circle = 1;
while (circle <= 5) :print("跑第",circle , "圈")circle-=1  #循环条件永远成立
print("程序运行结束")

3.2.2 for循环

for循环可以用来迭代对象

listA=["运筹学","大数据","供应链"]
for name in listA:print(name)
else:  #else块可省略print("遍历完了")dicB={"subject":"大数据","teacher":"吴老师"}
for k in dicB:print(k,"=",dicB[k])strC="hello"
for s in strC:print(s)

range()函数可以和循环一起使用,

range(n):生成[0,n)区间的数

range(m,n):生成 [m,n)区间的数

range(m,n,s):生成 [m,m+s,m+2*s…) ,[m,n)区间,每次增量是s

for i in range(5):  #0~4  print(i)for i in range(10,15):  #10~14print(i)
#利用索引便利元素,可以遍历列表和元组;(set集合没有索引)
listB=["管理学","应用统计学","质量管理"]
for i in range(len(listB)):print("第",i,"个元素:",listB[i])

【例题】求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a³+b³+c³=abc,则abc是水仙花数。

for i in range(100,1000):units = i % 10       #个位tens = i // 10 % 10  #十位hundreds = i // 100  #百位if (units**3 + tens**3 + hundreds**3 == i):print(i , "是水仙花数")

3.2.3 循环嵌套

【例题】“百钱买百鸡”是我国古代的著名数学题。题目描述:3文钱可以买1只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡。用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只?

for cock in range(0,101): #公鸡for hen in range(0,100-cock+1): #母鸡for chick in range(0,100-cock-hen+1,3): #小鸡,3只3只买if (cock + hen + chick == 100 and 3 * cock + 2 * hen + chick // 3 == 100):  #正好100只鸡,100文钱print("公鸡:" , cock);print("母鸡:" ,hen);print("小鸡:" , chick);print("=====================");

3.2.4 break和continue

break可以结束循环(不执行else)

continue跳过本次循环剩余的部分,进入下一次循环

for i in range(5):print('a进入循环,i=',i)if i==2:breakprint('i=',i)
运行结果:
a进入循环,i= 0
i= 0
a进入循环,i= 1
i= 1
a进入循环,i= 2
for i in range(5):print('a进入循环,i=',i)if i==2:continueprint('i=',i)
运行结果:
a进入循环,i= 0
i= 0
a进入循环,i= 1
i= 1
a进入循环,i= 2
a进入循环,i= 3
i= 3
a进入循环,i= 4
i= 4

课后习题

编程题:
1.企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,根据当月利润,求应发放奖金总数? 
2.定义正整数n,计算1+1/2+1/3+1/4+…1/n
3.一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3。编程找出1000以内的所有完数
4.韩信带兵不足百人:3人一行排列多1人;7人一行排列少2人;5人一行正好;请写出代码,以计算韩信带了多少人?
5.搬砖问题:36块砖,36人搬,男搬4,女搬3,两个小孩抬1砖,要求一次全搬完,问男、女和小孩各若干?

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
带头循环双向链表来咯!!! 前言:继上文,我们了解了结构最简单的一种链表---单链表那么我们今天就来...