Python.use(better) スケール課題 #1
Python.use(better)
スケール課題 #1《Python3.1|Jython2.5.0|IronPython2.6》
♪スタッフ研修用のセミナー教材(2003)に加筆(再構成)して、公式マニュアルの補足情報を提供します。
■ 関連記事
スケール課題:要求仕様 ★
スケール課題とは、次のようなものです。
>>> s = str(license) >>> s; len(s) 'Type license() to see the full license text' 43 >>> s; scale(len(s)) 'Type license() to see the full license text' '0....+....1....+....2....+....3....+....4..' >>> s.index("to") 15
関数 scale を使うと、引数に指定した長さの目盛(を表わす文字列)が得られます。5桁ごとに文字 "+" が、10桁ごとに数字(十の位)が現われます。すると、文字列の長さを視覚的に確認できるので便利です。
関数 scale を利用すると、与えられた引数と同じ長さの文字列が得られます。この文字列を使うと、同じ長さの文字列のオフセット位置(先頭の位置は 0 になる)がすぐに分かります。
たとえば、組み込み関数 index を利用すると、指定した文字列 "to" のオフセット値 15 が得られます。関数 scale で得られた文字列と比較すると、文字 "+" の位置から、それが正しいことが分かります。
■ step00:演算子 * を利用する
def scale_00(s):
return "."*len(s)
演算子 * を使って、引数 s に与えられた文字列と同じ長さ(個数)だけ、文字列 "." を連結します。
>>> s; scale_00(s)
'Type license() to see the full license text'
'...........................................'
すると、文字列 s と同じ長さの文字列が得られます。
■ step01:演算子 * を利用する
def scale_01(n):
return "."*n
演算子 * を使って、引数 n と同じ個数だけ、文字列 "." を連結します。
>>> s; scale_01(len(s))
'Type license() to see the full license text'
'...........................................'
ここでは、step00 と違って、実引数には文字列の長さ len(s) を指定します。
■ step02:for 文を利用する
def scale_02(n): s = "" for e in range(n): s += "." return s
for 文を使って、引数 n と同じ個数だけ、文字列 "." を連結 += します。
制御変数 e は、in に続く数列 range(n) の各要素を順に参照するので、for ブロックに記述したコードの断片を n 回だけ繰り返して実行します。
>>> s; scale_02(len(s))
'Type license() to see the full license text'
'...........................................'
》作業中です《