条件语句
所谓条件语句,顾名思义,就是依据某个条件,满足这个条件后执行下面的内容。
if
if
是构成条件语句的关键词,在Python中,if
条件语句最简单的实现方式如下:
a = 2
if a == 2:
print('a=2')
在上面简陋但仍可行的程序中,语句if a == 2:
,如果条件a == 2
返回的是True
,那么就执行下面的语句。特别注意,冒号是必须有。此外,在条件成立时执行的print('a=2')
中,前面要有4个空格。这是Python的特点,称为语句块。
在《维基百科》是这样解释的:
Python开发者有意让违反了缩排规则的程序不能通过编译,以此来使程序员养成良好的编程习惯。并且Python语言利用缩排表示语句块的开始和结束(Off-side规则),而非使用花括号或者某种关键词。增加缩排表示语句块的开始,而减少缩排表示语句块的结束。缩排成为了语法的一部分,例如上面的if
语句。
根据PEP的规定,必须使用4个空格来表示每级缩排。使用Tab字符和其他数目的空格虽然可以编译通过,但不符合编码规范。支持Tab字符和其他数目的空格仅仅是为了兼容很旧的Python程序和某些有问题的编辑程序。
if…elif…else
在实际的应用中,仅用if
往往是不够的,即第一个条件不足以判断所有情况,这时就需要引入别的条件判断,所以就有了if...elif...else
语句。其基本语句结构如下:
if 条件1:
语句块1
elif 条件2:
语句块2
elif 条件3:
语句块3
....
else:
语句块n
具体例子:
print('请任意输入一个整数:')
num = int(input())
if num == 5:
print('输入的数字为:{}'.format(num))
elif num > 5:
print('输入的数字为:{},大于5'.format(num))
else:
print('输入的数字为:{},小于5'.format(num))
当然,在实际的应用中可不会这么简单,甚至有嵌套的语句,如:
if expression:
pass
if expression:
pass
elif expression:
pass
else:
pass
elif expression:
pass
else:
pass
三元运算符
三元运算,是条件语句中比较简练的一种表达方式,其基本结构如下:
A = 95
score = "Good" if A > 90 else "Bad"
print(score)
# 输出Good
从上面的例子看,实际上就是把if...else
语句写到一行,如果要抽象成公式,大概就是这样的:A = X if Y else Z
- 如果
Y
为真,那么就执行A = X
- 如果
Y
为假,则执行A = Z
注意,三元运算中,if
与else
后面都不需要跟冒号:
。
循环语句
for
在高级编程语言中,大多数都有for
循环,它是编程语言中针对可迭代对象的语句,它允许代码被重复执行。for
循环的一般格式如下:
for <variable> in <sequence>:
<statements>
else:
<statements>
实例:
lang = ['Python','Java','C++','C']
for i in lang:
print(i)
# 输出:
# Python
# Java
# C++
# C
for
是发起循环的关键词,i in lang
是循环规则,列表类型对象是序列类型,可以从左到右一个一个地按照索引将序列中的元素读取出来。当i=Python
时打印print(i)
此时的i
自然是Python
,如此循环直到最后一个元素,循环自动结束。
range(start,stop[,step])
range()
这个内建函数因为经常与for
循环一起结合使用,所以接下来结合循环来讲一下range()
。
首先解释一下range(start,stop[,step])
的含义:
- start:开始的数值,默认为0,也就是如果不写这项,则默认
start=0
。 - stop:结束的数值,必须写。
- step:变化步长,默认为1,也可以是正数也可以是负数。
>>> list(range(0,5,1))
[0, 1, 2, 3, 4]
>>> list(range(0,9,2))
[0, 2, 4, 6, 8]
>>> list(rang(0,-9,-1))
[0, -1, -2, -3, -4, -5, -6, -7, -8]
值得注意的是,在range()
函数中,输出值是不包括stop
值的,也就是其参数是一个半开区间[start,stop)
。有了以下的介绍,下面可以把range()
和for
结合起来讲了,直接看以下例子:
lang = ['Python','Java','C++','C']
n = len(lang)
for i in range(n):
print(lang[i])
# 输出:
# Python
# Java
# C++
# C
上面的n
实际上就是lang
列表的长度即为4,则range(n)
就相当于range(4)
,如果写完整点就是range(0,4,1)
,然后将i
作为索引输出列表的每一项元素。
while
Python中while
语句的一般形式:
while 判断条件(condition):
执行语句(statements)……
具体实例:
n = 100
sum, i = 0, 1
while i <= n:
sum += i
i += 1
print(sum)
# 输出:5050
break与continue
break
,在某个地方中断循环,跳出循环体。
n = 5
while n > 0:
if n == 2:
break
else:
print(n)
n -= 1
# 当n等于2时跳出循环,否则输出n,且n每循环一次值都减一。
# 输出
# 5
# 4
# 3
for i in range(1,5):
if i == 2:
break
else:
print(i)
continue
,从当前位置跳到循环体的最后一行的后面,即跳出当前当轮循环进行下一轮循环。
n = 6
while n > 0:
n -= 1
if n % 2 == 0:
continue
else:
print(n)
# 输出1-5之间的奇数
for i in range(1,6):
if i % 2 == 0:
continue
else:
print(i)
# 输出1-5之间的奇数
while … else
while...else
有点类似与if...else
,一旦遇到else
,就意味着已经不在while
循环内了。
n = 5
while n > 0:
print(n)
n -= 1
else:
print("n <= 0")
for … else
for...else
,与while...else
类似
for i in range(1,5):
print(i)
else:
print("is out of range")
# 输出
# 5
# 4
# 3
# 2
# 1
# n <= 0