mixed.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #!/usr/bin/env python3
  2. # Copyright 2009-2017 BHG http://bw.org/
  3. # globals
  4. dlevel = 0 # manage nesting level
  5. def main():
  6. r = range(11)
  7. l = [ 1, 'two', 3, {'4': 'four' }, 5 ]
  8. t = ( 'one', 'two', None, 'four', 'five' )
  9. s = set("It's a bird! It's a plane! It's Superman!")
  10. d = dict( one = r, two = l, three = s )
  11. mixed = [ l, r, s, d, t ]
  12. disp(mixed)
  13. def disp(o):
  14. global dlevel
  15. dlevel += 1
  16. if isinstance(o, list): print_list(o)
  17. elif isinstance(o, range): print_list(o)
  18. elif isinstance(o, tuple): print_tuple(o)
  19. elif isinstance(o, set): print_set(o)
  20. elif isinstance(o, dict): print_dict(o)
  21. elif o is None: print('Nada', end=' ', flush=True)
  22. else: print(repr(o), end=' ', flush=True)
  23. dlevel -= 1
  24. if dlevel <= 1: print() # newline after outer
  25. def print_list(o):
  26. print('[', end=' ')
  27. for x in o: disp(x)
  28. print(']', end=' ', flush=True)
  29. def print_tuple(o):
  30. print('(', end=' ')
  31. for x in o: disp(x)
  32. print(')', end=' ', flush=True)
  33. def print_set(o):
  34. print('{', end=' ')
  35. for x in sorted(o): disp(x)
  36. print('}', end=' ', flush=True)
  37. def print_dict(o):
  38. print('{', end=' ')
  39. for k, v in o.items():
  40. print(k, end=': ' )
  41. disp(v)
  42. print('}', end=' ', flush=True)
  43. if __name__ == '__main__': main()