मैं Fluent Python पुस्तक के अध्याय 14 नियंत्रण प्रवाह का अनुसरण कर रहा हूं,
निम्नलिखित कोड के साथ परेशानी का सामना करें:

class ArithmeticProgression:

    def __init__(self, begin, step, end=None):
        self.begin = begin
        self.step = step
        self.end = end

    def __iter__(self):
        result = type(self.begin + self.step)(self.begin)
        forever = self.end is None
        index = 0
        while forever or result < self.end:
            yield result
            index = + 1
            result = self.begin + self.step * index

जब मैं पुस्तक के अनुसार इसका परीक्षण करता हूं:

In [220]: ap = ArithmeticProgression(1, 1, 5)

In [221]: ap
Out[221]: <__main__.ArithmeticProgression at 0x1098b2160>

In [222]: list(ap)


#it run endless not return any result
#I should Ctrl+C to break it mandatory

मैं अपने कोड को स्रोत कोड लाइन के साथ example-code/aritprog_v1.py at Master · fluentpython/example-code
लेकिन किसी भी समस्या का पता लगाने में विफल।

0
AbstProcDo 20 सितंबर 2018, 17:10

1 उत्तर

सबसे बढ़िया उत्तर
index = + 1

होना चाहिए

index += 1

जो प्रत्येक पुनरावृत्ति में index एक जोड़ देगा। जैसा है, यह index = +1 या index = 1 है। तो लूप के बीच result का मान कभी नहीं बदलता है।

4
Patrick Haugh 20 सितंबर 2018, 17:15