Mar-28-2021, 08:02 PM
Hello,
I created this class:
And I am testing my class with this code script:
And I am getting this error:
I created this class:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class ssource: def __init__( self , n): self .list1 = [] self .list2 = [] self .i = 0 self . max = n self .At = stream( self , self .list1) self .Bt = stream( self , self .list2) def __next__( self ): if self .i> = self . max : raise StopIteration print ( f "NEXTSYNC:{self.i}" ) self .list1.append( f 'A{self.i}' ) self .list2.append( f 'B{self.i}' ) self .i + = 1 |
1 2 3 4 5 6 7 8 9 |
src = ssource( 10 ) Ai = src.Ait Bi = src.Bit for i in range ( 5 ): print ( f 'A->{next(Ai)}' ) for i in range ( 8 ): print ( f 'B->{next(Bi)}' ) for a in Ai : print ( f 'A->{a}' ) |
Error:NEXTSYNC:0
A->A0
NEXTSYNC:1
A->A1
NEXTSYNC:2
A->A2
NEXTSYNC:3
A->A3
NEXTSYNC:4
A->A4
B->B0
B->B1
B->B2
B->B3
B->B4
NEXTSYNC:5
B->B5
NEXTSYNC:6
B->B6
NEXTSYNC:7
B->B7
A->A5
A->A6
A->A7
NEXTSYNC:8
A->A8
NEXTSYNC:9
A->A9
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
<ipython-input-36-b322da59c757> in stream(src, fifo)
4 while True:
----> 5 if len(fifo)==0: next(src)
6 yield(fifo.pop(0))
<ipython-input-36-b322da59c757> in __next__(self)
17 def __next__(self):
---> 18 if self.i>=self.max: raise StopIteration
19 print(f"NEXTSYNC:{self.i}")
StopIteration:
The above exception was the direct cause of the following exception:
RuntimeError Traceback (most recent call last)
<ipython-input-39-9b42e44489d5> in <module>
7 for i in range(8):
8 print(f'B->{next(Bi)}')
----> 9 for a in Ai : print(f'A->{a}')
RuntimeError: generator raised StopIteration
here is my another function1 2 3 4 5 6 7 8 |
def stream(src, flist): try : while True : while len (flist) = = 0 : next (src) yield (flist.pop( 0 )) except StopIteration: pass # raise StopIteration |