Python3.2官方文档教程-流程控制语句(if,for,pass)

 除了前面介绍的while语句外,python也使用在其他语言中所熟知的一些流程控制语句。

2.1 if语句

 可能最被人周知控制语句就是if语句了,例如:

>>> x = int(input("Please enter an integer: "))

Please enter an integer: 42

>>> if x < 0:

... x = 0

... print(Negative changed to zero)

... elif x == 0:

... print(Zero)

... elif x == 1:

... print(Single)

... else:

... print(More)

...

More

 

Elif 可不出现也可多次出现和else部分也是可以选择的。关键elifelse if 的缩写形式,对于避免冗长的定义有很大帮助。If... Elif... Elif 语句在其他变成语言中可用switch case 语句来替代。

2.2 for语句

python中的for语句可能有以前你在C或者pascal中所用的有点小差别。她既不像Pascal语言中常常遍历数组的算法过程,也不像在C语言中给用户自己定义遍历步骤或模糊条件的能力,python中的for语句可以按照元素在序列(列表或者字符串)中出现的顺序逐步地遍历它们。例如:

>>> # Measure some strings:

... a = [catwindowdefenestrate]

>>> for x in a:

... print(x, len(x))

...

cat 3

window 6

defenestrate 12

在循环语句中修改正在遍历的序列是不安全的(这种情况仅仅发生在可变类型中,如列表)。如果你需要修改你正在遍历的列表(例如,想复制选中项)你必须首先复制list。然后利用分片符号很方便实现它。

>>> for x in a[:]: # make a slice copy of the entire list

... if len(x) > 6: a.insert(0, x)

...

>>> a

[defenestratecatwindowdefenestrate]

2.3 range()方法

如果你想迭代一个数字序列,内置方法range()可以很方便实现它。它可以生成连续的数字:

>>> for i in range(5):

... print(i)

...

0

1

2

3

4

方法中给出的结点不是产生序列中的一部分。Range(10)就是产生为长度为10序列中每个元素产生10个合法的索引值。该方法也可以让范围从其他数字开始,或者指定不同的增长数(甚至是负数,有时称这为阶梯)。

range(5, 10)

5 through 9

range(0, 10, 3)

0, 3, 6, 9

range(-10, -100, -30)

-10, -40, -70

为了迭代序列的目录,你可以结合range()len()结合起来,例如:

>>> a = [Maryhadalittlelamb]

>>> for i in range(len(a)):

... print(i, a[i])

...

0 Mary

1 had

2 a

3 little

4 lamb

 

但是,在许多情况下,运用enumerate()方法会更加方法,具体参照 Looping Techniques. 

如果你想打印一个范围,奇怪的现象将会出现。

>>> print(range(10))

range(0, 10) 

在很多情况下利用range()返回对象表现像列表,但实际上它不是列表。尽管当你迭代期望序列时,它能够依次地返回元素,但是它没有真正生成列表,因此节省空间。

我们可以把对象成为是可迭代的,就是指它很适合作为预期得到有序元素事情的方法和结构的对象。 我们已经知道for语句就是这种迭代器。方法list()也算一个,它可以产生有序列表。

>>> list(range(5))

[0, 1, 2, 3, 4]

稍后我们会看到更多能返回迭代对象和把迭代对象当做内容的方法。 

2.4  breakcontinue语句和在循环中的else子句

与在C语言中一样,Break 语句将会跳出离它最近的for或者while循环。

Continue语句也是从C中借鉴而来,继续开始循环的下一步。

循环语句中有时含有else的子句。当通过遍历结束导致循环终止(for)或者当循环条件变为false(如while,它将会执行。但是当循环被break语句所终止,它不会被执行。下面通过查询质数这个例子来学习:

 

是的,这是正确代码。请仔细看,else语句是属于for循环的,而不是if语句。与else用在if语句中相比,else用于循环中与用在try语句有更多相同之处。在try语句中当没有异常发生else语句将会执行,循环中当没有break发生else语句就会执行。对于更多的关于try语句和异常的信息可以查看处理异常:

 

2.5 Pass语句

Pass语句一般做些无关紧要的事情,当按照句法语句被要求时但是系统不需要任何操作,此时可以用pass语句。例如:

>>> while True:

... pass # Busy-wait for keyboard interrupt (Ctrl+C)

...

还常常用在创建最小类中。

>>> class MyEmptyClass:

... pass

...

能用到pass的另一个地方就是当你运行新代码时它作为方法或者条件主体的拥有者,允许你在一个更加抽象的层次去不停地思考。Pass将会被静静忽略:

>>> def initlog(*args):

... pass # Remember to implement this!

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值