现在的位置: 主页 > 新闻中心 > 文章列表

python学习(3)- 深入流程控制

作者:厦工楚胜(湖北)专用汽车制造有限公司 来源:www.szzq168.com 发布时间:2017-09-03 12:18:37
 

python学习(3)- 深入流程控制

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 是可选的。关键字 ‘elif’ 是 ‘else if’ 的缩写,这个可以有效避免过深的缩进。if … elif … elif …序列用于替代其它语言中的switch或case 语句。

for 语句
Python 中的for语句和 C 或 Pascal 中的略有不同。通常的循环可能会依据 一个等差数值步进过程(如 Pascal),或由用户来定义迭代步骤和中止条件(如 C ),Python 的 for 语句依据任意序列(链表或字符串)中的子项,按它们在序 列中的顺序来进行迭代。例如(没有暗指):

# Measure some strings:
… words = [‘cat’, ‘window’, ‘defenestrate’]
for w in words:
… print(w, len(w))

cat 3
window 6
defenestrate 12
在迭代过程中修改迭代序列不安全(只有在使用链表这样的可变序列时才会有这 样的情况)。如果你想要修改你迭代的序列(例如,复制选择项),你可以迭代 它的复本。使用切割标识就可以很方便的做到这一点
for w in words[:]: # Loop over a slice copy of the entire list.
… if len(w) > 6:
… words.insert(0, w)

words
[‘defenestrate’, ‘cat’, ‘window’, ‘defenestrate’]
range() 函数
如果你需要一个数值序列,内置函数range()会很方便,它生成一个等差级 数链表:

for i in range(5):
… print(i)

0
1
2
3
4
range(10) 生成了一个包含 10 个值的链表,它用链表的索引值填充了这个长度为 10 的列表,所生成的链表中不包括范围中的结束值。也可以让 range 操作从另一 个数值开始,或者可以指定一个不同的步进值(甚至是负数,有时这也被称为 “步长”)

range(5, 10)
5 through 9

range(0, 10, 3)
0, 3, 6, 9

range(-10, -100, -30)
-10, -40, -70
需要迭代链表索引的话,如下所示结合使 用range()和len()

a = [‘Mary’, ‘had’, ‘a’, ‘little’, ‘lamb’]
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]
稍后我们会看到更多返回可迭代(对象)和以可迭代(对象)作为参数的函数。

break 语句和 continue 语句, 以及循环中的 else 子句
break语句和 C 中的类似,用于跳出最近的一级for或while循环。

循环可以有一个else子句;它在循环迭代完整个列表(对于for)或执行条件为false (对于while)时执行,但循环被break中止的情况下不会执行。以下搜索素数的示例程序演示了这个子句:

for n in range(2, 10):
… for x in range(2, n):
… if n % x == 0:
… print(n, ‘equals’, x, ‘*’, n//x)
… break
… else:
… # loop fell through without finding a factor
… print(n, ‘is a prime number’)

2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3
(Yes, 这是正确的代码。看仔细:else语句是属于for循环之中, 不是if语句.)
当循环使用,else子句有更多的共同点与try语句的else子句比它如果语句是:a try语句的else子句时,没有发生异常运行,一个循环的else子句时,没有发生中断运行。欲了解更多关于try语句和异常,请处理异常。
continue语句是从 C 中借鉴来的,它表示循环继续执行下一次迭代:

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉SEO http://www.feimao666.com

  • 上一篇:dedecms5.7整合discuz x2方法
  • 下一篇:最后一页