条件控制、循环语句、迭代器和生成器
a,b=a,a+b
的计算方式为先计算右边表达式,然后同时赋值给左边,等价于:
n=bm=a+ba=nb=m复制代码
关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符,实例如下:
#!/usr/bin/python3 # Fibonacci series: 斐波纳契数列# 两个元素的总和确定了下一个数a, b = 0, 1while b < 1000: print(b, end=',') a, b = b, a+b复制代码
输出结果如下:
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,复制代码
if语句
Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else
。
- 每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
- 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
- 在Python中没有switch – case语句。
range()函数
内置range()函数,用于遍历数字序列,用法如下:
>>>for i in range(5):... print(i)...01234复制代码
>>>for i in range(5,9) : print(i) 5678>>>复制代码
也可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做'步长'),默认步长是1:
>>>for i in range(0, 10, 3) : print(i) 0369>>>复制代码
负数:
>>>for i in range(-10, -100, -30) : print(i) -10-40-70>>>复制代码
结合range()和len()函数以遍历一个序列的索引,如下所示:
>>>a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']>>> for i in range(len(a)):... print(i, a[i])... 0 Google1 Baidu2 Runoob3 Taobao4 QQ>>>复制代码
使用range()函数来创建一个列表:
>>>list(range(5))[0, 1, 2, 3, 4]复制代码
在 while(或for) … else 在条件语句为 false 时执行 else 的语句块:
#!/usr/bin/python3 count = 0while count < 5: print (count, " 小于 5") count = count + 1else: print (count, " 大于或等于 5")复制代码
输出结果:
0 小于 51 小于 52 小于 53 小于 54 小于 55 大于或等于 5复制代码
pass语句
pass是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句,如下实例:
>>>while True:... pass # 等待键盘中断 (Ctrl+C)复制代码
最小的类
>>>class MyEmptyClass:... pass复制代码
以下实例在字母为 o 时 执行 pass 语句块:
#!/usr/bin/python3 for letter in 'Runoob': if letter == 'o': pass print ('执行 pass 块') print ('当前字母 :', letter) print ("Good bye!")复制代码
输出结果:
当前字母 : R当前字母 : u当前字母 : n执行 pass 块当前字母 : o执行 pass 块当前字母 : o当前字母 : bGood bye!复制代码
### 迭代器 iter()和next()
>>>list=[1,2,3,4]>>> it = iter(list) # 创建迭代器对象>>> print (next(it)) # 输出迭代器的下一个元素1>>> print (next(it))2>>>复制代码
使用for循环遍历
#!/usr/bin/python3 list=[1,2,3,4]it = iter(list) # 创建迭代器对象for x in it: print (x, end=" ")复制代码
输出结果:
1 2 3 4复制代码
迭代器学习:
#! /usr/bin/python3import sysclass MyNumbers: def __iter__(self): # self.a = 1 return self # def __next__(self):# if self.a > 20:# print("跳出迭代")# raise StopIteration# else:# x = self.a# self.a += 1# return x def __next__(self): try: self.a+=1 if self.a > 20: print("跳出迭代") raise StopIteration else: return self.a except StopIteration: print("捕获异常") sys.exit() def __init__(self): self.a=1 print(self.a)myclass = MyNumbers()myiter = iter(myclass)for i in myiter: print(i)复制代码
生成器
在 Python 中,使用了 yield 的函数被称为生成器(generator)。跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。 调用一个生成器函数,返回的是一个迭代器对象。
#!/usr/bin/python3 import sys def fibonacci(n): # 生成器函数 - 斐波那契 a, b, counter = 0, 1, 0 while True: if (counter > n): return yield a a, b = b, a + b counter += 1f = fibonacci(10) # f 是一个迭代器,由生成器返回生成 while True: try: print (next(f), end=" ") except StopIteration: sys.exit()复制代码
关于生成器的详细解释,参考链接: