generator.py 707 B

12345678910111213141516171819202122232425262728293031
  1. #!/usr/bin/env python3
  2. # Copyright 2009-2017 BHG http://bw.org/
  3. def main():
  4. for i in inclusive_range(25):
  5. print(i, end = ' ')
  6. print()
  7. def inclusive_range(*args):
  8. numargs = len(args)
  9. start = 0
  10. step = 1
  11. # initialize parameters
  12. if numargs < 1:
  13. raise TypeError(f'expected at least 1 argument, got {numargs}')
  14. elif numargs == 1:
  15. stop = args[0]
  16. elif numargs == 2:
  17. (start, stop) = args
  18. elif numargs == 3:
  19. (start, stop, step) = args
  20. else: raise TypeError(f'expected at most 3 arguments, got {numargs}')
  21. # generator
  22. i = start
  23. while i <= stop:
  24. yield i
  25. i += step
  26. if __name__ == '__main__': main()