プログラムを作ろう!

-- 具体化してプログラムに置換える --

前回は、使うモジュール等を具体的に決めました。
sinカーブを表示するためには、まず表示する範囲を決める必要があり、前回ラジアン値で0~2πとしてあるので、numpyモジュールのlinspace関数で0~2πの数値を取得するとします。
linspace(start, end, num=n)は指定されたstartで指定された値からendで指定された値を含む間の数値n個の等差数列をnumpyの配列形式で返してくれますので描画する為のループは

import numpy as np

for t in np.linspace(0, 2*np.pi, num=63):
という範囲でデータを取得すればよさそうです。(num=63はπ=3.14なので約0.1づつ変化させるには63となります)
またsin( )関数は-1~+1まで変化するのでマイナス側に全角スペースが10個ありプラス側にも全角スペースが10個あるので●を置く位置は±10の範囲で変化させるためにnp.sin(t) * 10の範囲で変化させればいい事になり
import numpy as np

for t in np.linspace(0, 2*np.pi, num=63):
    pos = np.sin(t) * 10
となることが分かります。ここでposは表示する文字の位置なので文字列-10 から 10の位置を0 から 20の範囲に直すために
−1         0         1+
−098765432101234567890+
−          |          + <---この文字列の位置を示す
−0         1         2+
−012345678901234567890+

import numpy as np

for t in np.linspace(0, 2*np.pi, num=63):
    pos = np.sin(t) * 10 + 10
さらにこの状態では端数があるためintで整数型に変換します。
import numpy as np

for t in np.linspace(0, 2*np.pi, num=63):
    pos = int(np.sin(t) * 10 + 10)
次に表示するための文字列を生成する部分を考えると表示するためのベースの文字列は
basestr='          |          '
という式で変数basestrに入れておきます。
でposで置換える文字数の位置が分かっているので置換える文字の左側を lstr にいれて右側を rstr に代入します
lstr = basestr[:pos] ------- ●の左側の文字を返す
rstr = basestr[(pos+1):] -- ●の右側の文字を返す
これらの文字列の間に●を置けばいいのでプログラムは
import numpy as np

basestr='          |          '
for t in np.linspace(0, 2*np.pi, num=63): pos = int(np.sin(t) * 10 + 10) lstr = basestr[:pos] rstr = basestr[(pos+1):] print(lstr+'●'+rstr)
でプログラムが出来上がります。
このようにプログラムを考えるために目的に合った具体条件を決めて(仕様決めを行い)その条件に従って命令に置き換える事でプログラムが出来上がります。

to top page