Python基础:03.条件控制与循环语句

条件控制

1. 基本语法

1
2
3
4
5
6
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”块语句

Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else

if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elif和else 。因此若有的if条件写的不严谨导致,同时符合多个条件,只会执行第一个符合条件的语句块

python需要严格遵循缩进规则

1
2
3
4
5
6
7
age = 20
if age >= 6:
print('teenager')
elif age >= 18:
print('adult')
else:
print('kid')

teenager

当使用and和or进行混合条件判断时,条件判断是从左到右的并且在and和or两侧的条件不一定都执行

1
2
3
a,b,c,d = 5,7,8,4
if a<b or c>d: # c>d并不会判断,因为左边的a<b已经是True了
print('ok')

ok

链式比较也是可以的

1
4>3>2>1

True

2. 三元表达式

python中三元表达式允许将一个if-else代码块联合起来,在一行代码或一个语句中生成数据

其格式为:执行表达式1 if 判断表达式 else 执行表达式2 ,意思为,如果if判断表达式为True,则执行表达式1,否则执行表达式2

1
2
3
a = 10
value = 1 if a>5 else 0 #
value

1

三元表达式中的else语句不能去掉!

1
2
3
a = 10
value = 1 if a>5
value

File ““, line 2
value = 1 if a>5
^
SyntaxError: invalid syntax

如果条件以及真假表达式非常复杂,不建议使用三元表达式,会牺牲可读性

3. if的嵌套

if-elif-else可以嵌套在if结构中,同样使用缩进

1
2
3
4
5
6
7
8
9
10
11
print('数字猜谜游戏')
real_number = 7
guess = 0
while guess!=real_number:
guess = int(input('输入你猜的数字'))
if guess==real_number:
print('你猜对了')
elif guess<real_number:
print('你猜小了')
elif guess>real_number:
print('你猜大了')

数字猜谜游戏
输入你猜的数字3
你猜小了
输入你猜的数字8
你猜大了
输入你猜的数字7
你猜对了

4. 其他注意点

if必须严格遵循语法的形式,不能加大括号什么的,容易与集合混淆

1
2
3
4
name ="pag"
if name == "pag":{
print(name == "pag") # 这里的是构建了一个集合
}

True

1
2
a = {print(name == "pag")}
print(type(a))

True
<class ‘set’>

1
2
3
4
if name == "pag":{
print(name == "pag")
print("line 2 of if condition") # 在{}中间多加一条语句,会报错,因为这是集合
}

File ““, line 3
print(“line 2 of if condition”) # 在{}中间多加一条语句,会报错,因为这是集合
^
SyntaxError: invalid syntax

1
2
3
4
if name == "pag":{
print(name == "pag"),
print("line 2 of if condition") # 再加一个逗号就能正常运行,因为集合中间可以加逗号
}

True
line 2 of if condition

循环语句

1. while循环

1.1 一般格式

1
2
while 判断条件(condition):
执行语句(statements)......

注意冒号与缩进,严格遵循循环格式。Python中没有do-while语句

1
2
3
4
5
6
7
# 计算1到10的和
a=1
b=0
while a<=10:
b+=a
a+=1
print(b)

55

如果while循环体中只有一条语句,可以将该语句与while写在同一行中,虽然不建议这样做

1
2
a={'wan','yu'}
while a:print(a.pop()) #while a: 其中a也是一种条件判断,类似a中只要有元素,就符合条件语句

wan
yu

1.2 无限循环

一直满足循环条件,一直执行循环语句。在有些场景比较有用(例如:服务器上的实时请求)

可以使用 CTRL+C 来退出当前的无限循环。但是在notebook中不管用

1
2
3
while 1:
a=input('请输入一个字母')
print('你输入的字母是:',a)

1.3 while-else语句

循环+条件

1
2
3
4
5
6
count = 0
while count < 5:
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")

0 小于 5
1 小于 5
2 小于 5
3 小于 5
4 小于 5
5 大于或等于 5

2. for循环

Python for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串。for循环的一般格式如下:

1
2
3
4
for <variable> in <sequence>:
<statements>
else:
<statements>

如果序列中没有元素,则执行else

1
2
3
4
5
a=[1,2,3,4,5]
for i in a:
print(i)
else:
print(a)

1
2
3
4
5
[1, 2, 3, 4, 5]

for循环可以通过解包遍历两个序列数据

1
2
for x, y in [(1, 1), (2, 4), (3, 9)]:
print(x, y)

1 1
2 4
3 9

3. break和continue

3.1 break

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

同时注意break语句只跳出当前这一层的for或while,若外面还有循环结构,则继续循环

3.2 continue

continue 语句被用来告诉 Python 跳过当前循环轮中的剩余语句,进行下一轮循环

这两个语句通常都必须配合if语句使用

不要滥用break和continue语句。break和continue会造成代码执行逻辑分叉过多,容易出错。大多数循环并不需要用到break和continue语句,都可以通过改写循环条件或者修改循环逻辑

1
2
3
4
5
6
7
a = [10,11,12,13,14,15]
for i in a:
if i%2 == 0:
print (i)
else:
break
print (i)

10
11

1
2
3
4
5
6
7
a = [10,11,12,13,14,15]
for i in a:
if i%2 == 0:
print (i)
else:
continue
print (i)

10
12
14
15

4. pass语句

Python中pass是空语句,是为了保持程序结构的完整性,因为有时不加语句会报错。pass 不做任何事情,一般用做占位语句。在代码段中或定义函数的时候,如果没有内容,或者先不做任何处理,直接跳过,就可以使用pass

1
2
for i in [1,2,3]:
pass

Python基础:03.条件控制与循环语句
http://jswanyu.github.io/2021/09/05/Python/Python基础:03.条件控制与循环语句/
作者
万宇
发布于
2021年9月5日
许可协议