条件控制、循环语句、迭代器和生成器
a,b=a,a+b
的计算方式为先计算右边表达式,然后同时赋值给左边,等价于:
n=b
m=a+b
a=n
b=m
复制代码
关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符,实例如下:
#!/usr/bin/python3
# Fibonacci series: 斐波纳契数列
# 两个元素的总和确定了下一个数
a, b = 0, 1
while 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)
...
0
1
2
3
4
复制代码
>>>for i in range(5,9) :
print(i)
5
6
7
8
>>>
复制代码
也可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做'步长'),默认步长是1:
>>>for i in range(0, 10, 3) :
print(i)
0
3
6
9
>>>
复制代码
负数:
>>>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 Google
1 Baidu
2 Runoob
3 Taobao
4 QQ
>>>
复制代码
使用range()函数来创建一个列表:
>>>list(range(5))
[0, 1, 2, 3, 4]
复制代码
在 while(或for) … else 在条件语句为 false 时执行 else 的语句块:
#!/usr/bin/python3
count = 0
while count < 5:
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")
复制代码
输出结果:
0 小于 5
1 小于 5
2 小于 5
3 小于 5
4 小于 5
5 大于或等于 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
当前字母 : b
Good 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/python3
import sys
class 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 += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()
复制代码
关于生成器的详细解释,参考链接:blog.csdn.net/mieleizhi05…