文章目录

  • if 语句
  • 条件测试
  • 简单 if 语句
  • if-else 语句
  • if-elif-else 语句
  • for 循环语句
  • while 循环语句



  一般情况下,代码都是从上往下顺序执行的。但有些情况下需要根据具体情况有选择地执行代码,或者让一段代码执行多次。这就要用到

流程控制语句。Python中的流程控制语句有

if语句、

for循环语句、

while循环语句。其中

if语句用于根据表达式的真值来有选择地执行代码,

for

while循环语句用于让一段代码循环执行多次。

if 语句

条件测试

  首先介绍什么是条件测试条件测试也是一条表达式,但它的值比较特殊。通常的表达式例如1 + 2'abc' + 'def',这些表达式的值要么是数字,要么是字符串或者其它类型。而条件测试表达式的值是bool类型,也就是只可能是TrueFalse,不可能为其它的值。可以把条件测试表达式理解为一个命题,如果命题为真,那么它的值就是True,如果命题为假,它的值就是False
然后看几个条件测试表达式的例子:

print(0 < 1)
print(1 <= 1)
print(0 == 1)

  上面的0 < 11 <= 10 == 1就是条件测试表达式。0 < 1是正确的,所以它的值为True1 <= 1也是正确的,它的值也为True0 == 1可以理解为命题命题0和1相等,这是一个假命题,所以它的值为False

简单 if 语句

  知道什么是条件测试后,就可以来看if语句了。简单if语句的功能就是先判断条件测试为真还是为假,如果为真,就执行条件测试后面的语句,否则不执行。
  来看下面的例子:首先定义了一个变量temperature,它的值为30。然后是if语句,if后是一个条件测试temperature > 26,因为30 > 26是一个真命题,所以接下来会执行语句print('太热了')

temperature = 30
if temperature > 26:
    print('太热了')

  上面例子的输出结果如下:

太热了

  但如果temperature的值为20,那么temperature > 26就是一个假命题,就不会执行print('太热了')了。
  在这个例子中,temperature的值在写代码的时候就设置好了,所以看不出if语句有什么用。但在实际情况中,temperature的值在写代码时往往是不知道的,需要在程序执行时人工输入或者以其它方式得到。例如下面的例子:

s = input('输入温度:')
temperature = float(s)
if temperature > 26:
    print('太热了')

  首先调用input函数让用户输入温度,用户的输入会以字符串的形式存在变量s中。然后用函数float将字符串s转换为数字并赋值给变量temperature。然后就是前面讲的if语句了。
  if语句的冒号:后面可以是一条语句,也可以是多条语句组成的语句块,如果要执行多条语句,在每条语句前面按tab键缩进就好了。例如下面的例子中,前两条print语句前面有缩进,所以会被视为if语句的一部分,它们是否执行取决于temperature > 26是否成立;而第三条print语句print('程序执行结束')前面没有缩进,它不属于if语句的一部分,不论temperature > 26是否成立,它都会执行。

temperature = 30
if temperature > 26:
    print('太热了')
    print('开风扇')
print('程序执行结束')

if-else 语句

  有时会有这种情况:当条件测试为真时,就去执行语句A,否则就去执行语句B。这可以用多个if语句来实现,例如:

temperature = 20
if temperature > 26:
    print('太热了')
if temperature <= 26:
    print('凉快!')

  更为方便的做法是使用if-else语句。if-else语句的作用是首先判断if后的条件测试,如果为真,就执行条件测试后面的语句,否则就执行else后面的语句。例如上面的例子写成if-else的形式就是:

temperature = 20
if temperature > 26:
    print('太热了')
else:
    print('凉快!')

  else必须和if搭配使用。

if-elif-else 语句

  if-else适用于只要判断两种情形的情况,但有时需要判断多种情形,例如对于学生成绩,0-60分时,输出“不及格”;60-70分时,输出“及格”;70-80分时,输出“良好”;80分以上时,输出“优秀”。这时就需要用到if-elif-else语句了。

s = input('输入成绩:')
grade = int(s)
if grade < 60:
    print('不及格')
elif grade < 70:
    print('及格')
elif grade < 80:
    print('良好')
else:
    print('优秀')

  上述代码中的执行过程如下图所示,菱形框中的为条件测试:


Created with Raphaël 2.3.0 开始 输入grade grade<60 不及格 结束 grade<70 及格 grade<80 良好 优秀 yes no yes no yes no


  elif的数量可以是任意的。如果ifelif的条件都不成立的时候什么都不需要执行,最后的else及其冒号后面的语句就可以省略。


for 循环语句

一般情况下,程序是按顺序执行的,即执行完一条语句,就去执行下一条语句,但有时希望重复执行同一条语句,比如希望在屏幕上打印HelloWorld100次,如果不用循环语句,就不得不写100遍print('HelloWorld')

Python的for循环语句需要和列表搭配使用,先看下面的例子:首先定义了一个包含6个数字的列表,然后就是for语句了,先说程序的执行过程:让i等于lst的第0个元素,然后执行print语句;再让i 等于lst的第1个元组,然后执行print语句;再让i等于lst的第3个元素,然后执行print语句…直到i等于lst的最后一个元素,然后执行print语句。

lst = [1, 2, 3, 4, 5, 6]
for i in lst:
	print(i, i ** 2, i ** 3)
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216

如果上面代码不用for语句就是这样的:

i = lst[0]
print(i, i ** 2, i ** 3)

i = lst[1]
print(i, i ** 2, i ** 3)

i = lst[2]
print(i, i ** 2, i ** 3)
... ...
... ...
i = lst[5]
print(i, i ** 2, i ** 3)

可以看出,如果不用for语句,除了赋值语句i = lst[x]print语句每次都是一样的。在for语句中,for语句后面的语句为循环体,也就是每次都相同的语句,在上面的例子中,循环体就是print(i, i ** 2, i ** 3)。循环体可以包含多条语句,例如将上面的print语句写成3条语句分别打印i的一次方、二次方、三次方:

lst = [1, 2, 3, 4, 5, 6]
for i in lst:
	print(i)
	print(i ** 2)
	print(i ** 3)

但需要注意的是,循环体的每条语句前面都要缩进,也就是按tab键。

python while 字符串为空_循环语句

如果想结束循环体,也就是在循环执行结束后再写一些语句,而不让这些语句被当作循环体,不缩进就好了,例如:

lst = [1, 2, 3, 4, 5, 6]
for i in lst:
	print(i, i ** 2, i ** 3)
print('All numbers have been processed!')
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
All numbers have been processed!

可以看到,print('All numbers have been processed!')前没有缩进,所以没有被当作循环体,它只执行了一次。

另外,元组、区间(range)也可以和for搭配使用,例如下面的例子中:对range(6)即区间[0, 6)中的每个整数执行循环体,区间中有6个整数,所以循环体执行了6次。

for i in range(6):
	print('HelloWorld')
HelloWorld
HelloWorld
HelloWorld
HelloWorld
HelloWorld
HelloWorld

while 循环语句

  前面介绍过for循环语句,但for必须要搭配列表使用,for比较适合于循环次数已知的情况,但有时循环次数事先是不知道的,例如:不断地让用户输入一个数字,然后程序输出这个数的相反数,当用户输入0的时候,程序才终止。如果用for循环的话,就必须定义一个无限长的列表,才能达到这个效果(因为你也不知道用户最多会输入多少次,所以这个列表必须为无限长)。而定义一个无限长的列表是无法实现的。
  循环次数不确定的循环语句比较适合用while语句。while语句同样要用到条件测试表达式,一个完整的while语句执行过程如下:
①判断while后面的条件测试是否为真;
②如果为真,就执行循环体;如果为假,跳到第④步;
③(条件为真才会执行这一步)执行循环体,然后回到第①步;
④循环结束。

  来看个例子:

x = 0
while x < 30:
    x = x + 13
print(x)

  首先给x赋值为0。然后就是循环语句了,首先判断x < 30,由于0 < 30,所以条件为真,执行循环体x = x + 13,这时x的值就为13了;然后再次判断x < 30,由于13 < 30,条件为真,继续执行循环体,然后x的值就变成26了;然后再判断x < 30, 由于26 < 30,条件还是为真,继续执行循环体x = x + 13,然后x的值就变成39了;然后判断x < 30,由于39 > 30,条件为假,就不再执行循环体了,循环结束。接下来就执行while循环后面的语句,也就是print(x),程序输出如下:

39

  这段程序的流程图如下:

python while 字符串为空_python_02


  再回到本节开头的那个例子:不断地让用户输入一个数字,然后程序输出这个数的相反数,当用户输入0的时候,程序才终止。用while语句的写法如下:

s = input('输入一个数字:')
number = float(s)
while number != 0:
    print(-number)
    s = input('输入一个数字:')
    number = float(s)