[Python]小甲鱼Python视频第048课(魔法方法:迭代器) )课后题及参考解答
生活随笔
收集整理的這篇文章主要介紹了
[Python]小甲鱼Python视频第048课(魔法方法:迭代器) )课后题及参考解答
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
# -*- coding: utf-8 -*-
"""
Created on Sun Mar 24 20:24:02 2019@author: fengs
""""""0. 請用你的話解釋一下“迭代”的概念?重復相同的操作,將上一次操作的輸出時的狀態當次本次操作的輸入狀態1. 迭代器是一個容器嗎?不是,迭代是一個計算得出后續狀態的過程(__next__()),容器是已經存在,去取就行。2. 迭代器可以回退(獲取上一個值)嗎?不能3. 如何快速判斷一個容器是否具有迭代功能?isinstance(a,itera)是否有 __iter__()和 __next__() 魔法方法4. for 語句如何判斷迭代器里邊已經取空了?接管了迭代已經停止的異常,遇到迭代停止異常就認為是取空5. 在 Python 原生支持的數據結構中,你知道哪一個是只能用迭代器訪問的嗎.無序的集合
""""""
0. 用 while 語句實現與以下 for 語句相同的功能:
for each in range(5):print(each)"""
iter_range = iter(range(5))
while True:try:each = next(iter_range);print(each)except StopIteration:break"""
1. 寫一個迭代器,要求輸出至今為止的所有閏年。如
>>> leapYears = LeapYear()
>>> for i in leapYears:if i >=2000:print(i)else:break2016W
2012
2008
2004
2000
"""
import time
class LeapYear():def __init__(self):self.year = time.localtime().tm_year#print(self.year)def isLeap(self,year):if (year % 4 == 0 and year%100 != 0 ) or (year % 400 == 0):return Trueelse:return Falsedef __iter__(self):return selfdef __next__(self):while True:if self.isLeap(self.year) == False:self.year -= 1else:breaktmp = self.year;self.year -= 1return tmp;print('---------------------------------')
leapYears = LeapYear()
for i in leapYears:if i >=2000:print(i)else:break
print('---------------------------------')"""
2. 要求自己寫一個 MyRev 類,功能與 reversed() 相同(內置函數 reversed(seq) 是返回一個迭代器,是序列 seq 的逆序顯示)。例如:
>>> myRev = MyRev("FishC")
>>> for i in myRev:print(i, end='')ChsiF
"""class MyRev():def __init__(self,value):self.value = value;self.idx = len(self.value)def __iter__(self):return selfdef __next__(self):self.idx -= 1if self.idx >= 0:return self.value[self.idx]else:raise StopIterationmyRev = MyRev("FishC")
print('------------------')
for i in myRev:print(i, end='')
print('\n------------------')
轉載于:https://www.cnblogs.com/alimy/p/10590751.html
總結
以上是生活随笔為你收集整理的[Python]小甲鱼Python视频第048课(魔法方法:迭代器) )课后题及参考解答的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java内存管理-掌握虚拟机类加载机制(
- 下一篇: c语言数据结构学习心得——线性表