איטרטור טווח מותאם אישית
שיעור 10 מתוך 13 בקורס איטרטורים ב-Python של Coddy.
אתגר
קלצרו מחלקת איטרטור מותאמת אישית בשם StepRange שמייצרת רצף מספרים עם גודל צעד מותאם אישית. האיטרטור הזה צריך לחקות את ההתנהגות של הפונקציה המובנית range() של Python, אך עם גמישות רבה יותר בגדלי הצעדים.
המחלקה StepRange צריכה:
- לקבל את הפרמטרים
start,stopו-stepבבנאי שלה - לממש את המתודה
__iter__()כך שתחזיר את אובייקט האיטרטור עצמו - לממש את המתודה
__next__()כדי לייצר את הערך הבא ברצף - לטפל בגדלי צעד חיוביים ושליליים
- להעלות חריגה מסוג
StopIterationכשהרצף מסתיים
לאחר מימוש המחלקה StepRange, צרו ממנה מופע באמצעות ערכי הקלט והדפיסו כל מספר שנוצר בשורה חדשה.
הקלט הבא יסופק:
- שלושה מספרים שלמים המופרדים ברווחים, המייצגים את
start, אתstopואתstep
נסו בעצמכם
# קראו את הקלט
start, stop, step = map(int, input().split())
class StepRange:
def __init__(self, start, stop, step):
self.start = start
self.stop = stop
self.step = step
self.current = start
def __iter__(self):
return self
def __next__(self):
# TODO: ממשו את המתודה __next__()
pass
# צרו מופע של StepRange
step_range = StepRange(start, stop, step)
# TODO: עברו על StepRange והדפיסו כל ערך
# זכרו להדפיס כל ערך בשורה חדשהכל השיעורים ביחידה איטרטורים ב-Python
תרגלו בעצמכם: קומפיילר Python אונליין