流程控制
在python中pass关键字起到一个代码块占位符的作用
if
单if
# 格式
if 条件表达式:
代码块
如果 条件表达式的值为True,则执行代码块
值为False就忽略掉代码块,不让其执行
i=1
if i!=1:
print ("i不等于1")
print ("结束")
这段代码会先判断 i!=1
的值
由于i=1,所以这个表达式的值为False
自然就会跳过print ("i不等于1")
这行语句
然后按照顺序结构继续执行print ("结束")
if…else…/三元运算符
# 格式
if 条件表达式1:
代码块1
else 条件表达式2:
代码块2
如果 表达式1的值为True,则执行代码块1,忽略掉else部分
如果 条件表达式1的值为False,则执行代码块2
在一些情况下,这种格式的判断语句可以简写成三元运算符
a = 3
b = 4
num = 0
if a > b:
num = a
else:
num = b
# 其他语言中三元表达式的格式为 变量 = 条件表达式 ? 值1 : 值2
# python中三元运算符的格式为 变量 = 值1 if 条件表达式 else 值2
# 当条件表达式为True的之后 变量 = 值1
# 反之 变量 = 值2
# 简写成三元运算符
num = a if a > b else b
if…elif…else
# 格式
if 条件表达式1:
代码块1
elif 条件表达式2:
代码块2
# 这里可以加多个elif
else :
代码块n
if 或 elif 的条件表达式为True,则执行对应的代码块
不再检查下面的其他条件表达式
如果所有if和elif的条件表达式为False,则执行else对应的代码块n
另外python中是没有switch这种选择语句的,官方文档推荐使用这种方式来代替switch
// js代码
i = 1;
a = 0
switch(i){
case 0:
a = 0;
break;
case 1:
a = 1;
break;
default:
a = 2;
break;
}
# python代码
i = 1
if i == 0:
a = 0
elif i == 1:
a = 1
else :
a = 2
不过我在网上找到一种使用字典建立跳转表的方式
# 字典
i = 1
a = 0
switcher = {0:0,1:1,2:2}
a = switcher[i]
字典的value不仅可以是值对象,还可以是函数名,或者lambda表达式
switcher = {
0:lambda : print(0),
1:lambda : print(1),
2:lambda : print(2)
}
i = 0
switcher[i]()
if嵌套
无论什么嵌套都是很复杂的,尤其是嵌套n层之后
所以一般的情况,都是会用if-elif-else格式来代替if嵌套
不过有些情况,使用if嵌套还是比较合适的
比如,上火车
if 有票:
if 加10块:
if 加100块:
if 加300:
做软卧
else:
做硬卧
else:
做软座
else:
做硬座
else:
滚
循环
python中没有do-while 没有++/–
python中有两种循环
- while循环
- for循环
while循环格式
while 条件表达式:
循环体
for循环格式
for 变量 in 可迭代对象:
循环体
这种for循环和其他语言的foreach类型的循环比较像
其他多数语言的循环都是
// 通常
for(i = 0;i < 10;i++){
循环体
}
// js遍历数组
for(i = 0 ; i < arr.length ; i++){
console.log(arr[i]);
}
# python中也可以用类似的思路遍历序列
# 使用range()配合len()
for i in range(len(list)):
print(list[i])
for循环通常是用于遍历可迭代对象,或者执行指定次数的循环
使用while一般用于不确定执行次数的循环()直到不满足某个条件的时候结束循环)
break&continue
break终止循环
continue终止本轮循环,进入下一次循环
比如说 i==7的时候结束循环,这个时候用到break
比如 打印所有的奇数 那么当i%2==0的时候 就会用到continue
for/while…else
还有 for和while都可以跟else
for i in range(10):
print(i)
else:
print(11)
# 只有循环完整的执行一遍结束后才会执行else部分的代码
# 如果循环遇到break退出了,那么else部分是不会执行的
循环嵌套
一般遍历多维列表/元组等,以及打印99乘法表的时候比较有用
比如打印一个99乘法表
i=1
while i<=9:
j=1
while j<=i:
print("%d*%d=%d"%(j,i,j*i),end="\t") #不换行
j+=1
print() #换行
i+=1
运行结果
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