<<前 [TOP] 次>>
次のプログラムを作ってみましょう。
【graph1.py】
# graph1.py a = [ 10, 25, 4, 52, 30, 16, 42, 22, 36, 8, 19, 100 ] s = [ '1:', '2:', '3:', '4:', '5:', '6:', '7:', '8:', '9:', '10:', '11:','12:'] print( " \t---------+---------+---------+---------+---------+---------+") def draw(names,data): newdata = scaling(data) for i in range(0, (len(data)) ): drawLine( names[i], data[i], newdata[i] ) def drawLine(name,value,count): print (name+"\t", end="") for i in range(0, int(count)) : print ('*', end="") print( '(' + str(value) + ')') def scaling(data): max = maxv(data) newdata = list(range(12)) for i in range(0, len(data)): newdata[i] = (data[i]*60)/max return newdata def maxv(data): max = data[0] for i in range(1, len(data)) : if (data[i] > max) : max = data[i] return max draw(s,a) print( " \t---------+---------+---------+---------+---------+---------+")
グラフを表示するプログラムです。
では内容を見ていきましょう。
グラフの目盛をプリントするときに "\t"
というのを使っています。
これは、キーボードのTabキーを入力したのと同じ役割をします。
使うときはダブルコーテーション(")で囲みます。
これはエスケープ処理と呼ばれるものです。
その他にも、"\n"
がよく使われます。
これは、改行すると言う意味です。
newdata = list(range(12))
これは配列の入れ物だけを用意しています。
pythonではnew演算子を使用した配列のメモリを確保ができないので、list()
メソッドとrange()
メソッドを組み合わせてこのような方法をとっています。
newdata[i] = (data[i]*60)/max
今回は、*の数60個を最大の100とおいて表示するようにしています。
計算式で使われている60はその意味です。
最大の*の数を変えたければ、この数を変えると良いでしょう。
出力結果です。
次のプログラムを作ってみましょう。
【graph2.py】
def draw( names, data ): newdata = scaling( data ) for i in range(0, (len(data)) ): drawLine( names[i], data[i], newdata[i] ) def drawLine( name, value, count ): print (name+"\t", end="") for i in range(0, int(count)) : print ('*', end="") print( '(' + str(value) + ')') def scaling( data ): max = maxv( data ) newdata = list(range(12)) #グラフの最大の長さ limit = 10 for i in range(0, len(data)) : x = float((data[i])) y = float((x*limit/max)) newdata[i] = int(y) return newdata def maxv( data ): max = data[0] for i in range(1, len(data)): if (data[i] > max): max = data[i] return max #ここから a = [ 120, 600, 60, 10, 100 ] s = [ 'A:', 'B:', 'C:', 'D:', 'E:'] print( " \t---------+---------+---------+---------+---------+---------+") draw( s, a ) print( " \t---------+---------+---------+---------+---------+---------+")
先ほどのプログラムをもっと簡単に書いてみました。
違うのは次の部分です。
def scaling( data ): max = maxv( data ) newdata = list(range(12)) #グラフの最大の長さ limit = 10 for i in range(0, len(data)) : x = float((data[i])) y = float((x*limit/max)) newdata[i] = int(y) return newdata
ここでは、limitという変数を作りそこにグラフの最大の長さを入れています。
計算にはfloatを使っています。
出力結果を見てみましょう。
↓↓クリックして頂けると励みになります。