素数を表示するための小さなプログラムを作成しています。コード (以下) は正しい答えを生成しますが、出力を「きれいに」表示するのに問題があります。
import math
N = int(input('List primes up to: '))
maxDigits = math.ceil(math.log10(N)) #equal spacing, even with lesser digit stuff
for i in range(3,N,2):
for d in range(2,int(math.sqrt(i))):
if i%d==0:
break
else :
print(str(i),end=' '*(maxDigits-len(str(i))))
アイデアは、素数が持つことができる最大桁数に基づいて、出力画面にできるだけ多くの列を収めることでした。しかし、今プログラムを実行すると、改行なしですべての数字が長い行に表示されます。これにより、次のような出力が得られます。
それはとても醜いです!それは私の目を燃やす!http://img194.imageshack.us/img194/5522/2eyd.png
これは...まさに私が目指していたものではありません。数字が行を折り返すという事実がなく、十分なスペースがない場合に次の行に移動することがわかっていれば、すべてうまくいくでしょう。では、どうすればプログラムでこの厄介なラッピングを取り除くことができますか? エレガントなほど (つまり、端末の幅を数えて maxDigits で割る必要があるとは言わないでください)、より良い...:D