python学习四:条件控制、循环语句、迭代器和生成器

条件控制、循环语句、迭代器和生成器

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

  1. 每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
  2. 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
  3. 在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…

转载于:https://juejin.im/post/5d02fc52f265da1b897acbcf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值