Python流程控制语句(Control Flow)
Python用于流程控制的语句包括if,for,while,这些都是从C语言借鉴过来的,然后我们会提到pass语句。
1,if
if的语法很简答,我们举一个例子就好,注意关键字if, elif, else,一个if复合语句中可以有多个elif。
x = int(input("input an integer : "))
if x > 0:
print x, " > 0"
elif x < 0:
print x, " < 0"
else:
print x, " = 0"
2,for
Python的for语句和C语言中的for语句是有区别的,C语言的for语句有循环变量初始语句,变化语句,以及一个循环结束条件语句,C的for语句很灵活。
而Python的for语句就是在一个序列(Sequence)上遍历,按照序列中元素的顺序遍历。 [关于序列参考Python基础-序列(Sequence)]
语法:for item in sequence:
2.1 一个基本的例子
words = ["feelings", "like", "love"] #输出:8 feelings
for word in words: # 4 like
print len(word), word # 4 love
2.2 深入
一般情况下不要在for语句的内部去修改被遍历的序列,为什么呢,因为默认情况下for在遍历一个sequence的时候是不会事先复制它的,所以如果我们要修改被遍历的sequence,我们就手动复制一个sequence用于遍历。
如下是一个例子,用words[:]把words给复制下来,结果大家自己实验一下
for word in words[:]:
print len(word), word
if len(word) > 4:
words.insert(0, word)
print "words : ", words
如果我们在for中不用words[:]替换words,会出现什么情况呢,会出现这个循环永远也终止不了,因为每循环一次words的长度就增加1,大家动手试验一下便知。通过这个试验以及更深入的实验我们还可以探索出Python for语句的一些实现机制,后面我会写一篇来探讨这个。
3,while
Python的while语句和C语言几乎一样,只是判断条件没有括号围着。
下面这个例子输出一个Fibonacci数列
a, b = 0, 1
fib = []
while len(fib) < 10: #循环条件没有括号
a, b = b, a+b
fib.append(b)
print fib
输出:[1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
4,关于for和while的更多
4.1 break 和 continue
break和continue也是从C语言借鉴过来的,而且意义也一样,break跳出当层循环,continue开始执行循环下一轮。
4.1 属于for和while的else
循环语句for和while也可以有else,这是当循环完成,也就是没有被break打破循环的情况才会执行的语句块
一个例子,找出2~19中的质数,体会下for语句中的break和else。
factor = []
for n in range(2, 20):
for x in range(2, n):
if n%x == 0:
print n, "=", x, "*", n/x
break;
else: # 这个else是和第3行的for匹配的
factor.append(n)
print factor
输出结果:
4 = 2 * 2
6 = 2 * 3
......
[2, 3, 5, 7, 11, 13, 17, 19]
5, pass语句
我们今天看的if,while,for都是复合语句(compound statement), 复合语句就是包含其他语句的语句,除了if,while,for还有with,try以及函数和类定义。
而在复合语句中,如果我们什么都不需要做,就可以用pass,这就像C语言中只是一个分号的空语句
一个例子,代码在这个地方等待键盘Ctrl-C来终止。
while True:
pass
参考:
1, http://docs.python.org/3.3/tutorial/controlflow.html#if-statements Python文档
2, http://docs.python.org/3/reference/compound_stmts.html Python文档
Python流程控制语句(Control Flow)的更多相关文章
- 【转】Python流程控制语句
[转]Python流程控制语句 人们常说人生就是一个不断做选择题的过程:有的人没得选,只有一条路能走:有的人好一点,可以二选一:有些能力好或者家境好的人,可以有更多的选择:还有一些人在人生的迷茫期会在 ...
- Python流程控制语句
人们常说人生就是一个不断做选择题的过程:有的人没得选,只有一条路能走:有的人好一点,可以二选一:有些能力好或者家境好的人,可以有更多的选择:还有一些人在人生的迷茫期会在原地打转,找不到方向.对于相信有 ...
- 『无为则无心』Python基础 — 13、Python流程控制语句(条件语句)
目录 1.流程控制基本概念 2.选择结构(条件语句) (1)条件语句概念 (2)if语句语法 (3)if...else...语句 (4)多重判断 (5)if语句嵌套 3.应用:猜拳游戏 4.三元运算符 ...
- 004 python 流程控制语句
流程控制语句 1.if判断 语法 a = 10,b = 20# 1if a == 10: print('a等于10')# 2if a > b: print('a大于b')else: pri ...
- 4.python流程控制语句介绍
流程控制语句分类 1).顺序结构 2).判断结构 3).循环结构 判断结构 特点:如果 ... 否则 ... 格式一: ① if 条件表 ...
- python流程控制语句 ifelse - 3
#! /usr/bin/python x = input ('please inut a integer:') x = int(x) : print ('你输入了一个负数') elif x == : ...
- Python流程控制语句详解
1.程序结构 计算机在解决问题时,分别是顺序执行所有语句.选择执行部分语句.循环执行部分语句,分别是:顺序结构.选择结构.循环结构.如下图: 2.选择语句 2.1最简单的if语句 Python使用保留 ...
- 『无为则无心』Python基础 — 14、Python流程控制语句(while循环语句)
目录 1.什么是循环结构 2.while循环 (1)while循环的语法 (2)while循环的应用 3.while语句的死循环 4.break和continue 5.while循环嵌套 (1)应用场 ...
- Knockoutjs实例 - 属性绑定(Bindings)之流程控制(Control flow)
一.foreach binding 使用此功能可以方便我们循环遍历输出某个数组.集合中的内容. (1).循环遍历输出数组 View Row Code 1 <script type="t ...
随机推荐
- UVa 11825 (状压DP) Hackers' Crackdown
这是我做状压DP的第一道题,状压里面都是用位运算来完成的,只要耐下心来弄明白每次位运算的含义,还是容易理解的. 题意: 有编号为0~n-1的n台服务器,每台都运行着n中服务,每台服务器还和若干台其他服 ...
- Asp.net中的HttpModule和HttpHandler的简单用法
在Asp.net中,HttpModule和HttpHandler均可以截取IIS消息进行处理,这使得我们制作人员能够非常方便的进行诸如图片水印添加,图片盗链检查等功能. 下面先就HttpModule的 ...
- LeetCode Linked List Cycle II 单链表环2 (找循环起点)
题意:给一个单链表,若其有环,返回环的开始处指针,若无环返回NULL. 思路: (1)依然用两个指针的追赶来判断是否有环.在确定有环了之后,指针1跑的路程是指针2的一半,而且他们曾经跑过一段重叠的路( ...
- 【英语】Bingo口语笔记(65) - 我也是系列
- Javascript高级程序设计
根据叶小钗同学的建议,觉得有必要去读读Javascript高级程序设计,不想装B,只想仔细读读,源代码参考. 偶第一个想法,就是去读面向对象和事件那块,不仅关键,而且是薄弱点儿,所以必须去干掉这个短板 ...
- 线上redis服务内存异常分析。
项目中,新增了一个统计功能,用来统计不同手机型号的每天访问pv,看了下redis2.6有个setbit的功能,于是打算尝尝鲜把 redis从2.4更新到了2.6 因为是租了vps.服务器的内存只有4g ...
- [Papers]NSE, $u$, Lorentz space [Bjorland-Vasseur, JMFM, 2011]
$$\bex \int_0^T\frac{\sen{\bbu}_{L^{q,\infty}}^p}{\ve+\ln \sex{e+\sen{\bbu}_{L^\infty}}}\rd s<\in ...
- iOS 复选框风格转换 Switchery 开关效果
Switchery 是个简单的 JavaScript 组件,只要几个简单的步骤就可以帮助用户把默认的 HTML 复选框转换成漂亮 iOS 7 样式风格.用户可以很方便的自定义这种转换,所以可以很好的配 ...
- IRequiresSessionState和IReadOnlySessionState应用上的一些差异
在调用ashx时,如果需要应用Session,则必须继承接口 IRequiresSessionState,IReadOnlySessionState,但根据字面,可以知道 IRequiresSessi ...
- redhat 下Redis安装
Redis 官网:http://redis.io/ 下载地址: http://redis.io/download 安装方法: cd opt wget http://download.redis. ...