基本语句及顺序结构
1 基本语句
1.赋值语句
用赋值号(=)将右边的值(表达式)赋给左边变量的语句。
name=’李福’
age=18
2.复合型赋值语句
用复合运算符(包括算术复合运算符和位复合运算符)的赋值语句。
序列赋值:x,y=10,20
多目标赋值:x=y=10
复合赋值:c+=a
2 顺序结构
程序工作的一般流程为:数据输入、运算处理、结果输出。顺序结构是指为了解决某些实际问题,自上而下依次执行各条语句,其流程图如下:

选择结构
1 if语句
Python中使用if保留字来组成选择语句。if语句仅处理条件成立的情况,其流程图如下:

if语句由if关键字、条件表达式和代码块三部分组成,它根据表达式的判断结果选择是否执行相应的代码块。
if 表达式:
语句块
if关键字可以理解为“如果”,当条件表达式的值为True时,则执行代码块。
if语句使用过程中的常见错误:
(1)if语句后面未加冒号。
(2)使用if语句时,如果在符合条件时,需要执行多个语句,但是,在第二个输出语句的位置没有缩进。
2 if-else语句
如果遇到只能二选一的条件,例如,大学毕业是直接就业,还是考研深造。Python中提供了if…else语句解决类似问题:

if-else语句产生两个分支,如果if条件表达式结果为True,则执行代码块1;如果条件表达式结果为False,则执行代码块2。
if 表达式:
语句块1
else:
语句块2
3 if…elif…else语句
if…elif…else语句主要用于处理多种条件的情况,从而解决现实生活中复杂的多重选择问题,其流程如下:

若条件表达式1的结果为True,则执行代码块1;若条件表达式2的结果为True,则执行代码块2,若else前面的条件表达式结果都为False,执行代码块n。
if 表达式1:
语句块A
elif 表达式2:
语句块B
elif 表达式3:
语句块C
课堂练习:BMI
身体质量指数,BMI(Body Mass Index )指数,简称体质指数,是国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。
计算公式:BMI=体重(千克)/身高^2(米)
BMI<18.5 体重偏轻
18.5<=BMI<=23.9 正常体重范围
BMI>23.9 体重超重
根据要求,输入体重和身高,计算出BMI的值并给出相应提示。
如果只考虑一种表达式成立或不成立的结果(即没有elif分支),则多分支的if结构转化为双分支的if结构。
在使用分支结构时,需要注意以下事项:
1.表达式可以是任意类型,如5>3,x and y>z,3,0等。其中,3表示恒真(即True),而0表示恒假(即False)。
2.可以仅有if子句构成单分支结构,但是else子句必须与if子句配对,不能出现仅有else子句没有if子句的情况。
4 分支语句嵌套
当有多个条件需要满足并且条件之间有递进关系时,可以使用分支语句的嵌套。其中,if子句、elif子句以及else子句中都可以嵌套if语句或者if…elif…else子句。
书写格式:
嵌套的if语句要求以锯齿形缩进格式书写,以便分清层次关系。
【例3-9】我国的婚姻法规定,男性22岁为合法结婚年龄,女性20岁为合法结婚年龄。因此如果要判断一个人是否到了合法结婚年龄,首先需要使用双分支结构判断性别,再用递进的双分支结构判断年龄,并输出判断结果。
sex=input("请输入您的性别(M或者F):")
age=int(input("请输入您的年龄(1~20):"))
if sex=='M':
if age>=22:
print("到达合法结婚年龄")
else:
print("未到合法结婚年龄")
else:
if age>=20:
print("到达合法结婚年龄")
else:
print("未到合法结婚年龄")
运行结果:
请输入您的性别(M或者F):F
请输入您的年龄(1~20):28
到达合法结婚年龄
循环结构
循环问题滲透在日常生活的方方面面,例如,学生上学,每天从宿舍到教室,往返于这两个点。类似这样反复做同一件事的情况,称为循环。
计次循环
重复一定次数的循环,称为计次循环
如for循环
条件循环
一直重复,直到条件不满足时才结束的循环
while循环
1 while语句
while循环是通过一个条件来控制是否要继续反复执行循环体中的语句。While语句用于在满足循环条件时重复执行某件事情,其流程如下

当表达式的值为真时,执行相应的语句块(循环体),然后再判断表达式的值,如果为真,则继续执行语句块;当表达式的值为假时,检查其后面是否有else子句,如果有,则执行else子句;如果没有,则直接跳出while语句
while 条件表达式:
循环体
【例3-12】将“不忘初心”输出3次。
i=1
while i <= 3:
print("不忘初心")
i=i+1
运行结果:
不忘初心
不忘初心
不忘初心
在使用while语句时,需要注意以下事项:
① while语句的表达式可以是任意类型,如x!=y,x>3等。
② 循环体中的语句块有可能一次也不执行。
③ 语句块可以是一条或多条语句。
④程序中需要包含使循环结束的语句。
2 for语句和range()内建函数
for循环语句是一个计次循环,通常适用于枚举或遍历序列,以及迭代对象中的元素。 一般应用在循环次数己知的情况下。
迭代变量用于保存读取出的值:对象为要遍历或迭代的对象,该对象可以是任何有序的序列对象,如字符串、列表和元组等;循环体为一组被重复执行的语句
for 迭代变量 in 对象:
循环体
1.进行数值循环
利用数值循环输出3遍“不忘初心”:
for i in [1,2,3]:
print("不忘初心")
for循环常与内置函数range()函数搭配使用,以控制循环中代码段的执行次数。该函数语法格式为:
语法格式如下:range(start, end, step)。
【例】计算1+2+3+4+...+100的结果
print("计算1+2+3+4+...+100的结果为:")
result = 0
for i in range(1,101,1):
result += i
print(result)
运行结果:
计算1+2+3+4+...+100的结果为:
5050
2. 遍历字符串
【例】以遍历方式计算出“黑化肥发灰会挥发;灰化肥挥发会发黑”中“发”在字符串中出现的次数。
word = '黑化肥发灰会挥发;灰化肥挥发会发黑'
sum = 0
for letter in word:
if letter == '发':
sum += 1
print(sum)
运行结果:
4
3. 迭代对象
从理论上来说,循环对象和for循环调用之间还有一个中间层,该层将循环对象转换可迭代对象。这一转换通过使用iter()函数实现。但从逻辑层面上,常常可以忽略这一层,所以循环对象和可迭代对象常常相互指代对方。
3 循环语句嵌套
在Python中,允许在一个循环体中嵌入另一个循环,这称为循环嵌套。它在Python中,for循环和while循环都可以进行循环嵌套。
while循环中可以嵌套while循环
while 条件表达式1:
代码块1
......
while 条件表达式2:
代码块2
......
for循环也可以嵌套使用
for 临时变量 in 可迭代对象:
代码块1
for 临时变量 in 可迭代对象:
代码块2
【例】编写程序,使用双重循环输出九九乘法表。
for i in range(1,10):
for j in range(1,i+1):
d = i * j
print('%d*%d=%-2d'%(j,i,d),end = ' ' )
print()
百钱百鸡
公鸡5钱1只,母鸡3钱1只,小鸡3只1钱,100钱买100只鸡有几种方案?
鸡兔同笼
现有鸡兔同笼,从上数35个头,从下数94只脚,问笼中有多少只鸡和兔?
转移和中断语句
当循环条件一直满足时,程序将会一直执行下去。如果希望在中间离开循环,也就是for循环结束计数之前,或者while循环找到结束条件之前。有两种途径来做到:
使用break语句完全中止循环。
使用continue语句直接跳到下一次循环
1 break语句
break语句用于跳出离它最近一级的循环。
1.在while语句中使用break语句
while 条件表达式1:
执行代码
if 条件表达式2:
break
2.在for语句中使用break语句
for 迭代变量 in 对象:
if 条件表达式:
break
2 continue语句
continue语句用于跳出当前循环,继续执行下一次循环。
1.在while语句中使用continue语句
while 条件表达式1
执行代码
if 条件表达式2
continue
2.在for语句中使用break语句
for 迭代变量 in 对象:
if 条件表达式:
continue
当执行到continue语句时,程序会忽略当前循环中剩余的代码,重新开始执行下一次循环。
3 pass语句
pass语句,表示空语句。它不做任何事情,一般起到占位作用。
【例】在应用for循环输出10〜20 (不包括20)的偶数时,在不是偶数时,应用pass语句占个位置,方便以后对不是偶数的数进行处理。
for i in range(10,20):
if i%2 == 0:
print(i,end=' ')
else:
pass
运行结果:
10 12 14 16 18
while...else与for...else语句
与别的编程语言不一样的是python还支持这样的语法:while...else与for...else语句。
只要没有break或者return,不管while是否执行,都会执行else语句(continue也是可以执行else)。
1 while...else语句
while...else类似于if...else,在python中while只要遇到了else就会意味到这个条件已经不在while循环运行了。
【例】编写程序,随机产生骰子的一面(数字1~6),给用户三次猜测机会,程序给出猜测提示(偏大或偏小)。如果某次猜测正确,则提示正确并中断循环;如果三次均猜错,则提示机会用完。
import random
point = random.randint(1,6)
count = 1
while count <= 3:
guess = int(input("请输入您的猜测:"))
if guess > point:
print("您的猜测偏大")
elif guess < point:
print("您的猜测偏小")
else:
print("恭喜您猜对了")
break
count = count+1
else:
print("很遗憾,三次全猜错了!")
运行结果:
请输入您的猜测:23
您的猜测偏大
请输入您的猜测:1
您的猜测偏小
请输入您的猜测:3
您的猜测偏小
很遗憾,三次全猜错了!
2 for...else语句
else子句作用是for循环中if条件一直不满足,则最后就执行else语句。在for循环中加break后,循环会在if条件满足时退出,后面的else语句不执行。
【例】for...else语句应用示例,猜年龄游戏,通过输入一个年的年龄,然后判断是猜大了还是猜小了。若超过3次,提示“对不起,次数到了!”。
age_old_boy = 60
for i in range(3):
guess_age = int(input("请输入年龄:"))
if guess_age == age_old_boy:
print("猜对了!")
break
elif guess_age > age_old_boy:
print("猜大了!")
else:
print("猜小了!")
else:
print("对不起,次数到了!")
运行结果:
请输入年龄:28
猜小了!
请输入年龄:56
猜小了!
本章小结
本章详细介绍了选择结构语句、循环结构语句、break和continue跳转语句以及pass语句的概念及用法。在程序中,语句是程序完成一次操作的基本单位,而流程控制语句是用于控制语句的执行顺序。要重点掌握if语句、while 语句和for语句的用法。
思考与练习
1.有一个三位整数,请你逆序输出它的各位数字。比如123输出为321。
2.设计一个温度换算器,实现华氏度、摄氏度、开氏度之间的相互转换。其中,摄氏度 = (华氏度 - 32) / 1.8;华氏度 = 摄氏度*1.8 + 32;开氏度 = 摄氏度 + 273.15 。
3.输入一个整数,判断如果是奇数则显示奇数,否则显示偶数。
4.输入一个整数,如果是整数则打印“正数”;如果是负数则打印“负数”;如果是零则打印“零”。
5.输入出生年和月,然后计算出接下来的生日距离今天还有多少天。
6.输入一个年份,如果是闰年 则显示闰年,否则显示平年。
7.设计一个收款程序,如果金额不足,提示还差多少钱;如果金额够,提示应找回多少钱。其中,如果总金额到达100元,打九折。
8.输入一个季度,首先判断是否在1~4之间,然后判断该季度有哪几个月份,并显示该季度中的月份。
9.输入一个月份,首先判断是否在1~12之间,然后判断返回该月份的天数。
10.输入两个整数,一个作为开始值,一个作为结束值,然后输出中间的数字。
11.编写随机加法考试程序。要求是随机产生两个数字,相加结果,总共10道题。如果输入正确成绩累加2分,如果输入错误成绩扣除5分。
12.应用continue语句,计算累加1~100 之间能被3 整除的整数和。