次はループをインプリメント [wython]
日本語スクリプト言語wythonの実装を続ける。今日は、繰り返しを処理できるようにした。wythonはPythonのラッパーなので、繰り返しには、while文とfor文がある。このうち、for文は特に日本語でどう表現したらいいか分からないので、後回しにして、簡単にできるwhile文と、forを使ううちでも、ある数からある数まで数える、range()を使う場合を取り上げる。
具体的に、wythonのスクリプトを示すと、
整数型変数sumに0を代入する。 整数型変数nに0を代入する。 nが10以下の間、 sumにnを足す。 nに1を足す。 sumを表示する。 sumに0を代入する。 1から10までnを変化させながら、 sumにnを足す。 sumを表示する。 整数型変数mに0を代入する。 1から10まで変化するnの各々について、 「n : 」を改行せずに表示する。 1からnまでmを変化させつつ、 「*」を改行せずに表示する。 改行する。
これをPythonに変換すると、
#!/usr/bin/env python # -*- coding:euc-jp -*- sum = 0 n = 0 while n <= 10: sum += n n += 1 print sum sum = 0 for n in range(1, (10 + 1)): sum += n print sum m = 0 for n in range(1, (10 + 1)): print "%d : " % (n), for m in range(1, (n + 1)): print "*" , printとなる。結果は、
55 55 1 : * 2 : * * 3 : * * * 4 : * * * * 5 : * * * * * 6 : * * * * * * 7 : * * * * * * * 8 : * * * * * * * * 9 : * * * * * * * * * 10 : * * * * * * * * * *
である。
繰り返し以外にも若干追加をしているので、今日実装した機能の仕様をまとめておこう。
- while文は、「〜の間、」をキーワードにする。
- for文のうち、数え上げのrange()を使う文は、「〜から〜まで」を最初に記し、そのあとは変数名を一つ組み込むこととして、日本語表現は、特に制約を設けない。実際、上の例では、「nを変化させながら」「変化するnの各々について」「nを変化させつつ」というように、日本語が自然になるように言い換えている。
- x += n タイプの複合代入文は、「足す」と「引く」だけについては、「xにnを足す」「xからnを引く」と表記できる。
- 「改行せずに表示する」という動詞句を新設。これはprint文の最後にカンマを出力し、改行しない表示に対応した。
- 一方「改行する。」という文も新設し、これはprintのみに変換され、改行を出力する。
- 「代入する。」場合にも、最初に変数宣言したあとは、型に言及せずに変数名だけを使用できるようにした。
以上の仕様は、全て上の例文で使われている。
次は、リスト処理としてのfor文と、できればリストの表現とを考えたい。
コメント 0