专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Python » python教程:简明 Python 教程 -- 第6章 控制流 »正文

python教程:简明 Python 教程 -- 第6章 控制流

来源: 发布时间:星期四, 2009年1月8日 浏览:36次 评论:0
  介绍

  在到目前为止我们所见到总是有系列语句Python忠实地按照它们顺序执行它们如果你想要改变语句流执行顺序该如何办呢?例如你想要让些决定根据区别情况做区别事情例如根据时间打印“早上好”或者“晚上好”

  你可能已经猜到了这是通过控制流语句实现在Python中有 3种控制流语句——、for和while

  语句

  语句用来检验个条件 如果 条件为真我们运行块语句(称为 -块 ) 否则 我们处理另外块语句(称为 -块 ) 从句是可选

  使用语句

  例6.1 使用语句

#!/usr/bin/python
# Filename: .py
number = 23
guess = (raw_input('Enter an eger : '))
   guess number:
  
pr 'Congratulations, you guessed it.' # New block starts here
  
pr "(but you do not win any prizes!)" # New block ends here
el guess < number:
  
pr 'No, it is a little higher than that' # Another block
  
# You can do whatever you want in a block ...
:
  
pr 'No, it is a little lower than that'
  
# you must have guess > number to reach here
  pr 'Done'
# This last statement is always executed, after the statement is executed


  (源文件:code/.py)

  输出

$ python .py
Enter an eger : 50
No, it is a little lower than that
Done
$ python .py
Enter an eger : 22
No, it is a little higher than that
Done
$ python .py
Enter an eger : 23
Congratulations, you guessed it.
(but you do not win any prizes!)
Done


  它如何工作

  在这个我们从用户处得到猜测然后检验这个数是否是我们手中那个我们把变量number设置为我们想要任何整数在这个例子中是23然后我们使用raw_input取得用户猜测数字只是重用我们将在下章学习更多有关知识

  我们为内建raw_input提供这个串被打印在屏幕上然后等待用户输入旦我们输入些东西然后按回车键的后返回输入对于raw_input来说是我们通过把这个串转换为整数并把它存储在变量guess中事实上个类不过你想在对它所需了解只是它把串转换为个整数(假设这个串含有个有效整数文本信息)

  接下来我们将用户猜测和我们选择数做比较如果他们相等我们打印个成功消息注意我们使用了缩进层次来告诉Python每个语句分别属于哪个块这就是为什么缩进在Python如此重要原因我希望你能够坚持“每个缩进层个制表符”规则你是这样吗?

  注意语句在结尾处包含个冒号——我们通过它告诉Python下面跟着个语句块

  然后我们检验猜测是否小于我们如果是这样我们告诉用户它猜测大了我们在这里使用是el从句它事实上把两个相关联 - 语句合并为-el-语句这使得更加简单并且减少了所需缩进数量

  el从句都必须在逻辑行结尾处有个冒号下面跟着个相应语句块(当然还包括正确缩进)

  你也可以在块中使用另外语句等等——这被称为嵌套语句

  记住el部分是可选个最简单有效语句是:

   True:
  
pr 'Yes, it is true'


  在Python执行完个完整语句以及和它相关联el从句的后它移向语句块个语句在这个例子中这个语句块是主块从主块开始执行而下个语句是pr 'Done'语句在这的后Python看到结尾简单结束运行

  尽管这是个非常简单但是我已经在这个简单中指出了许多你应该注意地方所有这些都是十分直接了当(对于那些拥有C/C背景用户来说是尤为简单)它们在开始时会引起你注意但是以后你会对它们感到熟悉、“自然”

  给C/C注释

  在Python中没有switch语句你可以使用..el..语句来完成同样工作(在某些场合使用字典会更加快捷)

  while语句

  只要在个条件为真情况下while语句允许你重复执行块语句while语句是所谓 循环 语句个例子while语句有个可选从句

  使用while语句

  例6.2 使用while语句

#!/usr/bin/python
# Filename: while.py
number = 23
running = True
  while running:
  
guess = (raw_input('Enter an eger : '))
   guess number:
    
pr 'Congratulations, you guessed it.'
    
running = False # this causes the while loop to stop
  
el guess < number:
    
pr 'No, it is a little higher than that'
  
:
    
pr 'No, it is a little lower than that'
:
  
pr 'The while loop is over.'
  
# Do anything you want to do here
  pr 'Done'


  (源文件:code/while.py)

  输出

$ python while.py
Enter an eger : 50
No, it is a little lower than that.
Enter an eger : 22
No, it is a little higher than that.
Enter an eger : 23
Congratulations, you guessed it.
The while loop is over.
Done


  它如何工作

  在这个我们仍然使用了猜数游戏作为例子但是这个例子优势在于用户可以不断猜数直到他猜对为止——这样就不需要像前面那个例子那样为每次猜测重复执行这个例子恰当地介绍说明了while语句使用

  我们把raw_input和语句移到了while循环内并且在while循环开始前把running变量设置为True首先我们检验变量running是否为True然后执行后面 while-块 在执行了这块的后再次检验条件在这个例子中条件是running变量如果它是真我们再次执行while-块否则我们继续执行可选-块并接着执行下个语句

  当while循环条件变为False时候块才被执行——这甚至也可能是在条件第次被检验时候如果while循环有从句它将始终被执行除非你while循环将永远循环下去不会结束!

  True和False被称为布尔类型你可以分别把它们等效地理解为值1和0在检验重要条件时候布尔类型十分重要它们并不是真实值1

  块事实上是多余你可以把其中语句放在同块(和while相同)中跟在while语句的后这样可以取得相同效果

  给C/C注释

  记住你可以在while循环中使用从句

  for循环

  for..in是另外个循环语句它在序列对象上 递归 即逐使用队列中每个项目我们会在后面章节中更加详细地学习序列

  使用for语句

  例6.3 使用for语句

#!/usr/bin/python
# Filename: for.py
  for i in range(1, 5):
  
pr i
:
  
pr 'The for loop is over'


  输出

$ python for.py
1
2
3
4
The for loop is over


  它如何工作

  在这个我们打印了个 序列 我们使用内建range生成这个数序列

  我们所做只是提供两个数range返回个序列这个序列从第个数开始到第 2个数为止例如range(1,5)给出序列[1, 2, 3, 4]默认地range步长为1如果我们为range提供第 3个数那么它将成为步长例如range(1,5,2)给出[1,3]记住range 向上 延伸到第 2个数即它不包含第 2个数

  for循环在这个范围内递归——for i in range(1,5)等价于for i in [1, 2, 3, 4]这就如同把序列中每个数(或对象)赋值给i然后以每个i值执行这个在这个例子中我们只是打印i

  记住部分是可选如果包含它总是在for循环结束后执行除非遇到语句

  记住for..in循环对于任何序列都适用这里我们使用个由内建range生成列表但是广义说来我们可以使用任何种类由任何对象组成序列!我们会在后面章节中详细探索这个观点

  给C/C/Java/C#注释

  Pythonfor循环从根本上区别于C/Cfor循环C#员会注意到Pythonfor循环和C#中foreach循环十分类似Java员会注意到它和Java 1.5中for ( i : IntArray)相似

  在C/C如果你想要写for ( i = 0; i < 5; i)那么用Python你写成for i in range(0,5)你会注意到Pythonfor循环更加简单、明白、不易出错

  语句

  语句是用来 终止 循环语句即哪怕循环条件没有称为False或序列还没有被完全递归也停止执行循环语句

  个重要注释是如果你从for或while循环中 终止 任何对应循环块将不执行

  使用语句

  例6.4 使用语句

#!/usr/bin/python
# Filename: .py
  while True:
  
s = raw_input('Enter something : ')
  
s 'quit':
    

  
pr 'Length of the is', len(s)
pr 'Done'


  (源文件:code/.py)

  输出

$ python .py
Enter something : Programming is fun
Length of the is 18
Enter something : When the work is done
Length of the is 21
Enter something : you wanna make your work also fun:
Length of the is 37
Enter something :    use Python!
Length of the is 12
Enter something : quit
Done


  它如何工作

  在这个我们反复地取得用户地输入然后打印每次输入地长度我们提供了个特别条件来停止即检验用户输入是否是'quit'通过 终止 循环到达结尾来停止

  输入长度通过内建len取得

  记住语句也可以在for循环中使用

  G2Python诗

  我在这里输入是我所写段小诗称为G2Python诗:

Programming is fun
When the work is done
you wanna make your work also fun:
   
use Python!


  continue语句

  continue语句被用来告诉Python跳过当前循环块中剩余语句然后 继续 进行下轮循环

  使用continue语句

  例6.5 使用continue语句

#!/usr/bin/python
# Filename: continue.py
  while True:
  
s = raw_input('Enter something : ')
  
s 'quit':
    

  
len(s) < 3:
    
continue
  
pr 'Input is of sufficient length'
  
# Do other kinds of processing here...


  (源文件:code/continue.py)

  输出

$ python continue.py
Enter something : a
Enter something : 12
Enter something : abc
Input is of sufficient length
Enter something : quit


  它如何工作

  在这个我们从用户处取得输入但是我们仅仅当它们有至少3个时候才处理它们所以我们使用内建len来取得长度如果长度小于3我们将使用continue语句忽略块中剩余语句否则这个循环中剩余语句将被执行我们可以在这里做我们希望任何处理

  注意continue语句对于for循环也有效

  概括

  我们已经学习了如何使用 3种控制流语句——、while和for以及和它们相关和continue语句它们是Python中最常用部分熟悉这些控制流是应当掌握基本技能



  接下来我们将学习如何创建和使用



相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: