4.3 嵌套代码块

大多数编程语言允许我们在条件表达式或者if语句条件满足时执行代码块。我们在[w for w in sent7 if len(w) < 4] 这样的代码中已经看到条件测试的例子。在下面的程序中,我们创建一个叫word的变量包含字符串值'cat'if 语句中检查len(word) < 5 是否为真。它确实为真,所以if 语句的代码块被调用,print 语句被执行,向用户显示一条消息。别忘了要缩进,在print语句前输入四个空格。

  1. >>> word = 'cat'
  2. >>> if len(word) < 5:
  3. ... print('word length is less than 5')
  4. ... ![[1]](/projects/nlp-py-2e-zh/Images/4b5cae275c53c53ccc8f2f779acada3e.jpg)
  5. word length is less than 5
  6. >>>

使用 Python 解释器时,我们必须添加一个额外的空白行[1],这样它才能检测到嵌套块结束。

注意

如果你正在使用 Python 2.6 或 2.7,为了识别上面的print函数,需要包括以下行︰

  1. >>> from __future__ import print_function

如果我们改变测试条件为len(word) &gt;= 5来检查word的长度是否大于等于5,那么测试将不再为真。此时,if语句后面的代码段将不会被执行,没有消息显示给用户:

  1. >>> if len(word) >= 5:
  2. ... print('word length is greater than or equal to 5')
  3. ...
  4. >>>

if语句被称为一种控制结构,因为它控制缩进块中的代码将是否运行。另一种控制结构是for循环。尝试下面的代码,请记住包含冒号和四个空格:

  1. >>> for word in ['Call', 'me', 'Ishmael', '.']:
  2. ... print(word)
  3. ...
  4. Call
  5. me
  6. Ishmael
  7. .
  8. >>>

这叫做循环,因为 Python 以循环的方式执行里面的代码。它以word = 'Call'赋值开始,使用变量word 命名列表的第一个元素。然后,显示word的值给用户。接下来它回到for语句,执行word = 'me'赋值,然后显示这个新值给用户,以此类推。它以这种方式不断运行,直到列表中所有项都被处理完。