Hello I’m new in Python.
I’m trying to make a random iterator. But I receive TypeError which I couldn’t figure out why 🙁
I normally see when it has such error ease but this one I didn’t get my mistake.
Thank yoou in advance
INPUT
import random
class RandomInts:
def __init__(self, length, *, seed=0, lower=0, upper=10):
self.length = length
self.seed = seed
self.lower = lower
self.upper = upper
def __len__(self):
return self.length
def __iter__(self):
return self.RandomIterator(self.length,
seed=self.seed,
lower=self.lower,
upper=self.upper)
class RandomIterator:
def __iter__(self, length, *, seed, lower, upper):
self.length = length
self.lower = lower
self.upper = upper
self.num_requested = 0
random.seed(seed)
def __iter__(self):
return self
def __next__(self):
if self.num_requested >= self.length:
raise StopIteration
else:
result = random.randint(self.lower, self.upper)
self.num_requested += 1
return result
randoms = RandomInts(10)
for num in randoms:
print(num)
output
Traceback (most recent call last):
File "E:\Python_Learning\Avanced\5_sorting_iterables\sorting_iterables_1.py", line 42, in <module>
for num in randoms:
File "E:\Python_Learning\Avanced\5_sorting_iterables\sorting_iterables_1.py", line 15, in __iter__
return self.RandomIterator(self.length,
TypeError: RandomIterator() takes no arguments
>Solution :
Do you mean
def __iter__(self, length, *, seed, lower, upper):
or
def __init__(self, length, *, seed, lower, upper): in RandomIterator?