コラム 人と星とともにある数学 数学

フィボナッチ数を表示するコードを入力|Pythonで数学を学ぼう! 第3回

Python本家のホームページ

フィボナッチ数を表示するコード

第1回でも紹介しましたが、今度はそのコードを入力してみましょう。フィボナッチ数を表示するコードです。

>>> def fib(n):
>>>     a, b = 0, 1
>>>     while a < n:
>>>         print(a, end=' ')
>>>         a, b = b, a+b
>>>     print()
>>> fib(1000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987

これを前回紹介したグーグルColaboratoryで実行してみましょう。1行ずつ入力します。コードを入力し終わったらリターンします。

すると、次のように左端にスペース(インデント)が自動的に挿入されて次の行にカーソルが現れます。

2行目のコード「a, b = 0, 1」+リターンします。

インデントされたところで改行されます。3行目のコード「while a < n:」+リターンします。

すると再び自動インデントされて改行します。「print(a, end=' ')」+リターンします。

インデントされずに改行されます。このようにColaboratoryはコードを識別してインデントするかしないかを判断します。

続けて「a, b = b, a+b」+リターンします。

上の行と同じところで改行されました。ここで「デリート」して1つ分のインデントを削除します。

「print()」+リターンします。

これでdef文が終わりなので「デリート」してインデントを削除し、最後の「fib(1000)」を入力します。

これですべてのコードの入力が終わりです。実行させてみます。

セル左上の右向き矢印ボタンをクリックするとセル内のコードが実行されます。

慣れてくるとショートカットキー「シフト+リターン」「コマンド+リターン」「コントロール+リターン」を使うと便利です。

フィボナッチ数が出力されます。関数fib(n)は「nより小さいフィボナッチ数を表示する」という内容であることが分かります。

Pythonではインデント(行頭空白)が重要

この短いコードのなかにPythonコーディングのポイントを見ることができます。それがインデント(行頭空白)です。

これまでの多くのプログラム言語は範囲を指定するのに{}を用いますが、Pythonは違います。{}の代わりにインデント(行頭空白)を用います。{}に慣れた人は違和感を感じるかもしれません。

しかし、使い進めていくうちにその良さが分かってきます。コードの視認性です。どこからどこまでがブロックなのかが一目で分かります。このフィボナッチ数のコードではブロックが2つあります。

最初がdef文です。関数を定義(definition)する関数です。最後の7行目でインデントがなくなっていることから、def文のブロックが6行目までと分かります。

2番目がwhile文です。条件分岐する関数です。6行目のprint文でインデントがなくなっているので3行文がブロックだと分かります。

インデントにはコロン「:」がセット

「def fib(n):」「while a < n:」から分かるように、最後にコロン「:」を付けるのがPythonの作法です。Colaboratoryが自動インデントをしてくれるのは「:」のあるなしを判定していると思われます。

ちなみに、普通のテキストエディターでコーディングする際には自動インデントしてくれません。手動でインデントする必要があります。このことはまた別の機会にとりあげます。

このコードを自分なりに変更して遊んでみましょう。

次回は「素数判定プログラム」をコーディングしてみます。

  • この記事を書いた人
  • 最新記事

桜井進(さくらいすすむ)様

1968年山形県生まれ。 サイエンスナビゲーター®。株式会社sakurAi Science Factory 代表取締役CEO。 (略歴) 東京工業大学理学部数学科卒、同大学大学院院社会理工学研究科博士課程中退。 東京理科大学大学院非常勤講師。 理数教育研究所Rimse「算数・数学の自由研究」中央審査委員。 高校数学教科書「数学活用」(啓林館)著者。 公益財団法人 中央教育研究所 理事。 国土地理院研究評価委員会委員。 2000年にサイエンスナビゲーターを名乗り、数学の驚きと感動を伝える講演活動をスタート。東京工業大学世界文明センターフェローを経て現在に至る。 子どもから大人までを対象とした講演会は年間70回以上。 全国で反響を呼び、テレビ・新聞・雑誌など様々なメディアに出演。 著書に『感動する!数学』『わくわく数の世界の大冒険』『面白くて眠れなくなる数学』など50冊以上。 サイエンスナビゲーターは株式会社sakurAi Science Factoryの登録商標です。

あわせて読みたい

-コラム, 人と星とともにある数学, 数学
-