3、流程控制语句
1、if 语句
基本语法:
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
- Python 中用
elif
代替了else if
,所以if语句的关键字为:if—elif—else
- 每个条件后面要使用冒号
:
,表示接下来是满足条件后要执行的语句块 - 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块
- 在Python中没有
switch—case
语句
例1:小明身高1.75,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数:
区间 | 评价 |
---|---|
低于18.5 | 过轻 |
18.5-25 | 正常 |
25-28 | 过重 |
28-32 | 肥胖 |
高于32 | 严重肥胖 |
In: height=1.75
weight=80.5
BMI=round(weight/(height**2),2)
print("BMI为:",BMI)
Out: BMI为: 26.29
In: if BMI<18.5:
print("过轻")
elif 18.5<=BMI<25:
print("正常")
elif 25<=BMI<28:
print("过重")
elif 28<=BMI<32:
print("肥胖")
else:
print("严重肥胖")
Out: 过重
例2:分析下面的例子为何会出错
In: birth = input('birth: ')
if birth < 2000:
print('00前')
else:
print('00后')
Out: birth: 1999
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-3-786392a83547> in <module>
1 birth = input('birth: ')
----> 2 if birth < 2000:
3 print('00前')
4 else:
5 print('00后')
TypeError: '<' not supported between instances of 'str' and 'int'
分析:
因为input()
返回的数据类型是str
,str
不能直接和整数比较,必须先把str
转换成整数。Python提供了int()
函数来完成这件事情:
In: birth = int(input('birth: '))
if birth < 2000:
print('00前')
else:
print('00后')
Out: birth: 1999
00前
例3: if
嵌套判断是否能被2跟3整除
In: num=int(input("输入一个数字:"))
if num%2==0: # num除以2的余数等于0
if num%3==0: # num除以3的余数等于0
print ("你输入的数字可以整除 2 和 3")
else:
print ("你输入的数字可以整除 2,但不能整除 3")
else:
if num%3==0:
print ("你输入的数字可以整除 3,但不能整除 2")
else:
print ("你输入的数字不能整除 2 和 3")
Out: 输入一个数字:9
你输入的数字可以整除 3,但不能整除 2
2、While 语句
基本语法
- 条件内循环执行语句,不满足条件则退出
while 判断条件:
语句
- 条件内循环执行语句1,不满足条件则执行语句2
while 判断条件:
语句1
else:
语句2
- 需要注意冒号和缩进。另外,在 Python 中没有
do..while
循环。
# 计算 1 到 100 的总和
num=1
sum=0
while num<=100: #条件内循环,不满足条件则退出
sum=sum+num
num=num+1
print(sum)
# 5050
无限循环
var = 1
while var == 1 : # 表达式永远为 true,可以使用 CTRL+C 来退出当前的无限循环
num = int(input("输入一个数字 :"))
print ("你输入的数字是: ", num)
3、For 语句
基本语法
for 变量 in 序列:
语句1
else:
语句2
In: a=['c','c++','python','mysql']
for x in a:
print(x)
else:
print('循环结束')
Out: c
c++
python
mysql
循环结束
4、break 语句
break 语句用于跳出当前循环体
In: lan=['c','c++','python','mysql']
for x in a:
if x=='python':
print("python,正好跳出")
break
print("看看有没有跳出") # break已跳出,故此句不会打印出来
else:
print(x)
else:
print("完成循环")
Out: c
c++
python,正好跳出
5、range()函数
range()
函数,用于遍历数字序列
In: for i in range(5): #从0开始(含0),截止到5(不含5)
print(i)
Out: 0
1
2
3
4
In: for i in range(5,9): #从5开始(含5),截止到9(不含9)
print(i)
Out: 5
6
7
8
In: for i in range(0, 10, 3): # 从0(含)到10(不含),步长为3
print(i)
Out: 0
3
6
9
In: for i in range(-10, -100, -30): # 从-10(含)到-100(不含),步长为-30
print(i)
Out: -10
-40
-70
In: a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
for i in range(len(a)): # i=range(4)
print(i, a[i])
Out: 0 Google
1 Baidu
2 Runoob
3 Taobao
4 QQ
In: # 使用range()函数来创建一个列表:
a=list(range(5))
print(a)
Out: [0, 1, 2, 3, 4]
6、continue语句
break
语句可以在循环过程中直接退出循环,continue
语句可以提前结束本轮循环,并直接开始下一轮循环。- 这两个语句通常都必须配合if语句使用。
要特别注意,不要滥用
break
和continue
语句。break
和continue
会造成代码执行逻辑分叉过多,容易出错。大多数循环并不需要用到break
和continue
语句。
如:打印出1~10的奇数
In: n=0
while n < 10:
n = n + 1
if n % 2 == 0: # 如果n是偶数,执行continue语句
continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
print(n)
Out: 1
3
5
7
9
7、pass 语句
- pass是空语句,是为了保持程序结构的完整性。
- pass 不做任何事情,一般用做占位语句,如下实例
while True:
pass # 等待键盘中断 (Ctrl+C)