首页 > 编程语言 > 详细

Linux下Python学习笔记 2:条件判断、循环

时间:2015-09-14 00:31:41      阅读:373      评论:0      收藏:0      [点我收藏+]

一、条件判断

if 语句

比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,可以用if语句实现:

技术分享

注意: Python代码的缩进规则。具有相同缩进的代码被视为代码块,上面的3行 print 语句就构成一个代码块(但不包括第4行的print)。如果 if 语句判断为 True,就会执行这个代码块。

缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。

在ubuntu下的vim中需要设置tab默认为4个空格,可以找到 ~/.vimrc文件并设置 set tabstop=4

#使用vim打开 ~/.vimrc文件,若没有则创建
vim ~/.vimrc
#打开后输入
set tabstop=4

注意: if 语句后接表达式,然后用:表示代码块开始。

如果你在Python交互环境下敲代码,还要特别留意缩进,并且退出缩进需要多敲一行回车。

if-else 语句

技术分享

注意:else语句后也有:用来表示代码块开始。

if-elif-else 语句

相当于多层判断,为了方便看到效果,我们使用raw_input来接收我们的输入,以便于及时看到效果。

技术分享

换一种写法

技术分享

保存后运行

技术分享

二、循环

上一篇有提到集合类型list和tuple,当我们需要依次访问集合中的内容时,我们就需要循环了。

for 循环

技术分享

while 循环

技术分享

break 退出循环

技术分享

continue 继续循环

技术分享

循环嵌套

技术分享

迭代循环

Python中,迭代永远是取出元素本身,而非元素的索引。

对于有序集合,元素确实是有索引的。有的时候,我们确实想在 for 循环中拿到索引,怎么办?

方法是使用 enumerate() 函数:

技术分享

使用 enumerate() 函数,我们可以在for循环中同时绑定索引index和元素name。但是,这不是 enumerate() 的特殊语法。实际上,enumerate() 函数把:

[‘john‘, ‘json‘, ‘jay‘]

变成了类似:

[(0, ‘john‘), (1, ‘json‘), (2, ‘jay‘)]

因此,迭代的每一个元素实际上是一个tuple。

迭代dict

我们已经了解了dict对象本身就是可迭代对象,用 for 循环直接迭代 dict,可以每次拿到dict的一个key。

如果我们希望迭代 dict 对象的value,应该怎么做?

dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value:

技术分享

dict 对象还有一个 itervalues() 方法,迭代的效果和values()一样。

那这两个方法有何不同之处呢?

1. values() 方法实际上把一个 dict 转换成了包含 value 的list。

2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。

3. 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。

如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。

dict 对象还有一个 items()方法,

技术分享

可以看到 items()方法包含了key和value,其实是把dict对象转换成了包含tuple的list。

items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。

Linux下Python学习笔记 2:条件判断、循环

原文:http://www.cnblogs.com/idoudou/p/LearnPython_Conditional.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!