Python自学入门(四):流程控制

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<18
    print("青少年")
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~14
    print(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:
        break
    print('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:
        continue
    print('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砖,要求一次全搬完,问男、女和小孩各若干?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

专治八阿哥的孟老师

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值