Die einfachste Lösung ist:
for i in range(32, 128): print "%d -> '%s'"%(i, chr(i))
Dass bei 127 ein “leerer” String ausgegeben wird, ist in Ordnung – auch dieses Zeichen dient als Steuerungszeichen, in diesem Fall als “Delete” (was, wenigstens unter Unix, nochmal ein ganz anderes Thema ist).
Nett ist es, wenn man das zweispaltig ausgibt – dazu gäbe es verschiedene Möglichkeiten, mit unseren Mitteln wird man wohl am besten ein bisschen Mathematik einsetzen:
for i in range(48): print "%d -> '%s'\t%d -> '%s'"%( 32+2*i, chr(32+2*i), 32+2*i+1, chr(32+2*i+1))
Die 48 ergibt sich dabei als die Zahl der Zeilen, die wir ausgeben wollen – bei 128 - 32 = 96 Zeichen und zwei Zeichen pro Zeile sind das eben 48.
Könnt ihr das auf vierspaltige Ausgabe erweitern? Was passiert bei drei Spalten?