python で半日つぶれた

python って言語知ってます? 人気があるんだそうですが、私は嫌いです。今日で大っ嫌いになりました。

以前書いていた Raspberry Pi zero を使った signage なんですが、 python で作りました。ライブラリが手頃だったのと、使ったことがない言語への興味から python を使ったんですね。どんな動作をするのかと言いますと、指定したフォルダに入っている画像を指定した秒数ごとに表示するというものです。順番に表示しても面白くないので、ランダムに表示させるようにしています。

ただ、ランダムにするタイミングをループの中において、毎回ランダムな選択をするようにしていました。これだと、ランダム関数によって同じ画像が表示されることがあります。事実ありました。それだと面白くないので、考え方を変えて最初に配列の中身をシャッフルしてそれを順番に表示するようにしました。末尾まで来たら最初に戻ると言うことで、写真の MAX 回後に同じ画像が出ると言うことになります。写真の枚数をある程度多くしてやることで、見た感じ同じ画像が出てくるという印象はなくなります。

もともと配列に画像のファイル名を入れて使っていましたので、後者の方が簡単です。事実、修正する箇所は数行でした。まぁ、プログラム自体が 50 行程度ですので、簡単なものです。

ところが、アルゴリズム的にはむしろ簡単なのに、実行するとエラーが出ます。 python 使ったことある人ならきっと 1 度は陥る、インデント地獄ですw

私が一番最初に覚えた言語は PASCAL でした。その後に BASIC ですかね。 PASCAL という言語はブロックの最初は begin 。最後は end で明示します。 C 言語なんかでもブロックは{}で囲いますよね。 N88-BASIC はどうだっけ? 忘れました。

python の場合どうかというと、インデントでブロックを区切るんですね。確かに、キーを押す回数は少なくなるかもしれません。しかし、明確にブロックの最初と最後を指定する言語になじんだ人間には、インデントで区切るなんて言われても、インデントなんて表示方法の一手段という頭の人間には非常にわかりにくい。

事実、今回数行直すのに半日かかりました。

python 使いの方にはわからないかもしれませんが、苦行でした。


春の海のかなたにつなぐ電話かな

中村汀女

投稿者プロフィール

kaizawa
kaizawaブロガー
新潟県在住。1964年生まれ、東京オリンピックの年ですね。
突然燃え上がったり、鎮火したり興味の波が激しいので注意が必要です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA