一、条件语句
1.1 一些简单概念
- python通过
if...else...
和if...elif...else...
这两种形式来实现简单或复杂的决策。其中else
部分是可选的,若没有else
则不满足条件时什么也不执行。在多if条件语句中,只要有一个条件为真,就会执行并结束判断。
if 条件判断1:
代码块1
else 条件判断2:
代码块2
if 条件判断1:
代码块1
else 条件判断2:
代码块2
elif 条件判断3:
代码块3
在python3中if后面的判断语句需要加括号。
2. if条件判断根据代码返回的布尔逻辑结果True或False来判断是否进行操作,例如:布尔操作:and、or、not
,比较操作:==、!=、>、<、>=、<=
,成员操作:in、not in
,身份操作:is、is not
。
3. 根据python的pep编码规范,python通过四个空格来表明代码之间的联系,例如:
if Ture:
pass
1.2 实例
- 单条件判断
#coding:UTF-8
score=int(input("请输入你的分数:"))
if score<60:
print "挂了"
elif 60<=score<80:
print "还行"
else:
print "厉害"
-
多条件判断
使用and
或or
来连接逻辑表达式。 -
嵌套条件判断
最需要注意的问题是缩进的问题,每个if语句的下一行,并且是属于该层判断内的语句,应该进行四个空格的缩进(相对于上一层判断的位置)。 -
三元操作符
也称为条件表达式,格式是A=Y if X else Z
,相当于:
if X:
A=Y
else:
A=Z
实例:
#coding:UTF-8
def ifNull(string):
return "notNull" if len(string) > 0 else "null"
print ifNull("")
print ifNull("tyson")
二、循环语句
2.1 条件循环:while
- while条件判断根据逻辑运算结果来判断是否应该执行本次循环。
- 可以用在判断语句的逻辑运算符有:布尔操作:
and、or、not
,比较操作:==、!=、>、<、>=、<=
,成员操作:in、not in
,身份操作:is、is not
。 - 在循环体前,往往都会对相关变量进行初始化赋值。并且循环体内,往往都会包含相关变量的递进赋值,例如:
i+=1
。
案例:输出0到10数字相加的结果
num=0
sum=0
while num<10:
sum+=num
num+=1
print sum
result:
0
1
3
6
10
15
21
28
36
45
- while与else结合:当while循环体正常结束后执行else
#coding:UTF-8
num=0
sum=0
while num<3:
sum+=num
num+=1
print sum
else:
print "down"
result:
0
1
3
down
非正常结束(用了break)是不会执行esle内语句的
#coding:UTF-8
num=0
sum=0
while num<5:
if num==3:
break
sum+=num
num+=1
print sum
else:
print "down"
result:
0
1
3
但是用了continue的情况下,只要保证最后一个循环能执行,else部分就会执行
#coding:UTF-8
num=0
sum=0
while num<5:
if num==3:
num += 1
continue
sum+=num
num+=1
print sum
else:
print "down"
result:
0
1
3
7
down
2.2 循环语句:for
- for循环的作用对象:列表和字符等可迭代对象,例如:字符串、元组、列表、字段、函数
- 语法格式:
for x in y
,其中y是可迭代对象,而x是for语句从可迭代对象y中取出的每一个元素。 - 案例
案例1:遍历字符串
#coding:UTF-8
string="tyson"
for i in string:
print i.upper(),
result:
T Y S O N
案例2:遍历列表
List=["tySon,LAOWANG,laoli"]
for i in List:
print i.title(),
result:
Tyson,Laowang,Laoli
案例3:计算阶乘
#coding:UTF-8
def jiecheng(num):
chengji=1
for i in range(1,num+1):
chengji*=i
return chengji
print jiecheng(5)
print jiecheng(3)
result:
120
6
案例4:for语句结合else,该else会在最后一次循环正常结束后执行。同while与else结合情况相同
def jiecheng(num):
chengji=1
for i in range(1,num+1):
print "这是第",i,"次"
chengji*=i
else:
print "down"
print "最后的阶乘结果是:"
return chengji
print "开始执行",jiecheng(5)
print "开始执行",jiecheng(3)
result:
开始执行 这是第 1 次
这是第 2 次
这是第 3 次
这是第 4 次
这是第 5 次
down
最后的阶乘结果是:
120
开始执行 这是第 1 次
这是第 2 次
这是第 3 次
down
最后的阶乘结果是:
6
案例5:与range()结合实现阶乘。
range函数的简略介绍:
完整语法range(start,end,step)
,step不可为0,默认为1。写法1:range(x,y)
生成的是从x到y-1整数列。写法2:range(y)
生成的是从0到y-1整数列。
代码同上。
案例6:与zip()语句结合实现多列表并行遍历。
zip函数的简略介绍:
完整语法zip(list1,list2)
,生成的是[(list1[0],list2[0]),(list1[1],list2[1]),(list1[n],list2[n]),]
,也就是内置元组的列表。
#coding:UTF-8
list1=["tyson","laowang","laochen"]
list2=[21,25,28]
print "zip函数结果:",zip(list1,list2)
for x,y in zip(list1,list2):
print x,y
result:
zip函数结果: [('tyson', 21), ('laowang', 25), ('laochen', 28)]
tyson 21
laowang 25
laochen 28
案例7:与map()函数结合
map函数的简略介绍:
完整语法map(f,iterable)
,map函数可以将可迭代对象的每个元素传入函数处理并将每次处理的返回值组成一个列表(也可用函数解析式实现[f(x) for x in iterable]
)。
当函数为None时,map函数可以实现并行解析。
#coding:UTF-8
list1=["tyson","laowang","laochen"]
list2=[21,25,28]
list3=["boy","boy","oldman"]
print "map函数结果(函数参数为None的情况):",map(None,list1,list2)
print "map函数结果(函数参数为None的情况):",map(None,list1,list2,list3)
for x,y in map(None,list1,list2):
print x,y
for x,y,z in map(None,list1,list2,list3):
print x,y,z
result:
map函数结果(函数参数为None的情况): [('tyson', 21), ('laowang', 25), ('laochen', 28)]
map函数结果(函数参数为None的情况): [('tyson', 21, 'boy'), ('laowang', 25, 'boy'), ('laochen', 28, 'oldman')]
tyson 21
laowang 25
laochen 28
tyson 21 boy
laowang 25 boy
laochen 28 oldman
案例8:与enumerate函数结合
enumerate函数简单介绍:用于给传入的可迭代对象返回迭代器。语法:enumerate(可迭代对象)
。
#coding:UTF-8
list1=["tyson","laowang","laochen"]
print type(enumerate(list1))
for x,y in enumerate(list1):
print x,y
result:
<type 'enumerate'>
0 tyson
1 laowang
2 laochen
三、循环控制
3.1 break
用于while和for循环中,终止整个循环语句**(不再这行该循环体的下一次循环)**。
案例1:while与break结合
n=0
while n<10:
if n==3:
break
print n
n+=1
result:
0
1
2
案例2:for与break结合
name="hello,world"
for i in name:
if i == ',':
break
print i,
result:
h e l l o
3.2 continue
用于while和for循环中,终止本次循环
name="hello,world"
for i in name:
if i == ',':
continue
print i,
result:
h e l l o w o r l d
3.3 pass
用于循环语句、条件语句、函数语句中占空,保证语句完成,等待后续补上主体部分。
#coding:UTF-8
for i in "hello,world":
pass