06. Uh oh... ->16 10. Good! 16. str is immutable. s+s is needlessly expensive. Make a list. .append items and "".join() to get a string. 46. charmap.get is almost too clever. 53. "p: ", repr() better 54. 58. Don't catch exceptions you don't handle. This is very bad. It's good style to put everything, broken into discrete parts, into functions, and call the functions. This makes it harder to leak variables and accidentally clobber something or misuse something. It also makes your code importable by other code, if there's nothing to execute at the top level. The mechanism to test whether you're imported or running is to test the local module name. If it's "__main__", then you're running. Common idiom: if __name__ == "__main__": main(sys.argv)