条件语句、循环语句

条件语句、循环语句

1. 条件语句

  1. 在判断语句的结果不是不是 0 或者 False 或者 ‘’ 或者 None 时,那么都视为真
  2. Python 语言中,使用 缩进 来判断代码的层级
  3. 可以使用 input() 函数来接收键盘输入。

1.1 if…else 语句

使用 if...else 进行判断,满足条件则执行 if 下的代码,不满足则执行 else 下的代码

Python 中,if 语句的基本形式如下:

1
2
3
4
if 判断条件:
执行语句...
else:
执行语句...

if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系

1
2
3
4
5
6
results = 59

if results >= 60:
print('恭喜你,考试通过')
else:
print('很遗憾,考试未通过')

非零数值非空字符串非空 list 等,判断为 True,否则为 False

1
2
3
num = 6
if num:
print('num 不为空')

1.2 if…elif 语句多个判断条件

如果需要多次判断时,则可以使用 if...elif...else 语句

elif 的数量可以是 无限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 判断输入的手机号码是否有效,除了检查 长度、全数字字符, 还要检查是否以数字 1 开头、

def registerUser():
phone = input('请输入你的手机号码(不超过11个字符):')
if len(phone) > 11:
print('输入错误!手机号码超过了11个字符')
# 还需要进一步判断 输入的是否全数字
elif not phone.isdigit() :
print('输入错误!手机号码必须全是数字')
# 判断是否以数字1 开头
elif not phone.startswith('1') : # startswith 是字符串对象的方法
print('输入错误!手机号码必须以数字1开头')
else:
print('手机号码输入正确')

print('函数结束')

1.3 if 语句多条件同时判断

  • or: 表示两个条件中的任意一个满足条件,则条件成立
  • and: 表示两个条件都满足条件,则条件成立
1
2
3
4
5
6
7
8
9
10
11
12
java = 86
python = 68

if java > 80 or python > 80:
print('优秀')
else:
print('不优秀')

if (java >= 80 and java < 90) or (python >= 80 and python < 90):
print('良好')

输出结果: 不优秀 良好

1.4 多层语句判断

image-20220721181453511

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def charge(miles, duration):
if miles <= 3 :
if duration <= 1:
print('20 元/每公里')
return miles*20
else:
print('22 元/每公里')
return miles*22
elif miles > 3 :
if duration <= 1:
print('15 元/每公里')
return miles*15
else:
print('18 元/每公里')
return miles*18

2. 循环语句

2.1 for 循环

for 循环一般用于从 字符串、 列表 、 元组 等中依次取出每个元素进行操作。

1
2
3
4
5
6
studentAges = ['小王:17', '小赵:16', '小李:17', '小孙:16', '小徐:18']

for student in studentAges:
print(student)

# 小王:17,小赵:16,小李:17,小孙:16,小徐:18,

2.2 while 循环

while 循环:检查一个条件表达式,只要条件表达式结果为 True ,就执行下面缩进的代码,直到条件表达式结果为 False 时,结束循环。

1
2
3
4
5
6
7
8
9
i=1
while i<=10:
if i==10:
print(i)
else:
print(i, end=',')
i+=1

# 1,2,3,4,5,6,7,8,9,10

while 循环条件设置不当时,可能导致死循环。

1
2
3
i = 1
while i <= 100:
print(i)

2.3 for 循环和 while 循环的区别

  • for 循环主要用在迭代可迭代对象的情况。
  • while 循环主要用在需要满足一定条件为真,反复执行的情况。 (死循环+break 退出等情况。)
  • 部分情况下,for 循环和 while 循环可以互换使用。
1
2
3
4
5
6
7
for i in range(1, 10):
print(i)

i = 0
while i < 10:
print(i)
i += 1

3. 循环语句控制

循环控制语句描述
break终止循环, 并且跳出整个循环
continue跳出本次循环,继续下一次循环
pass空语句,为了保持程序结构的完整性

3.1 break 终止循环

break :在循环中,如果遇到 break ,则该循环体立即终止

  1. 在函数中 ,break 必须在 return 的上方,负责无效。
  2. 多个 break 必须位于不同的分支。
  3. breakreturn 都可以让 循环结束
1
2
3
4
5
6
7
8
9
10
11
def inputCommand():
while True:
command = input("请输入命令:")
if command == 'exit':
break
print(f'输入的命令是{command}')

return
print('末尾语句')

inputCommand()

3.2 continue 跳过循环

continue :在循环中,如果满足某种条件,可以 跳过当前循环而不退出循环体,继续执行后面的循环。

1
2
3
4
5
6
7
8
9
while True:
command = input("请输入命令:")
if command == 'exit':
break
if command == 'cont':
continue
print(f'输入的命令是{command}')

print('程序结束')

3.3 range() 函数

range 函数:根据输入的 int 数字,会生成一个可以被 for 循环遍历的列表。
range 函数参数:(开始值 = 0,结束值,步长)

range 函数 只有一个参数时,生成的列表从 0 开始,到 参数值 -1 结束。

1
2
3
4
for n in range(10, 20, 5):
print(n, end=',')

# 10,15,

3.4 enumerate 函数

enumerate 函数:在 for 循环时可以同时返回 列表中的元素 和它的 下标

1
2
3
4
5
6
7
8
# 找出下面列表中年龄大于17岁的学员,打印出他们在列表中的索引
studentAges = ['小王:17', '小赵:16', '小李:17', '小孙:16', '小徐:18']

for idx, student in enumerate(studentAges):
print(idx,student)
if int(student.split(':')[-1]) > 17:
print(idx)
# 4

4. 列表推导式

列表推导式:将列表中的元素依次经过 相同的处理 得到新的列表。
格式:[ 循环体 for 局部变量 in 原列表]

1
2
3
4
list1 = [1,2,3,4,5,6]

list2 = [num**3 for num in list1]
print(list2) # [1, 8, 27, 64, 125, 216]

5. 循环案例

多个循环可以嵌套使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 打印99乘法表
for i in range(1, 10):
for j in range(1, 10):
if i >= j:
print(f"{j} * {i} = {i*j:2}", end=' ')
else:
continue
print()


1*1= 1
1*2= 2 2*2= 4
1*3= 3 2*3= 6 3*3= 9
1*4= 4 2*4= 8 3*4=12 4*4=16
1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25
1*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8= 8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9= 9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

6. 冒泡排序

冒泡排序:通过依次取出数据,两两进行比较后排序

1
2
3
4
5
6
7
8
9
def dataSort(data):
for i in range(len(data)):
for j in range(i):
if i != j and data[i] < data[j]:
data[i], data[j] = data[j], data[i]
return data

arr = [23, 41, 25, 54, 18, 14]
print(dataSort(arr)) # [14, 18, 23, 25, 41, 54]