Pythonに「はちかよ!」と言わせたかった

どうも、文系大卒です。

大学で履修できる電算科目の単位は全部無視してしまったので、プログラミングの知識は全くありません。

実家でシニア世代と同居しているため、相対的に見るとなんとなくパソコンが得意な感じになっているのですが、実際は全然そんなことはなく、ちょっと複雑なことをやるとなるともう必死です。がんばっています。

 

 そんな私ですが、ある日、友人に薦められるままに、こちらの本を購入しました。

たのしいプログラミング Pythonではじめよう!

たのしいのか〜。

たのしいなら読むかな〜。

 

というわけで、「そもそもプログラミングとは?」「プログラミング言語とは?」「その中でPythonとは?」というレベルから、ぽちぽちと手を出しています。

なんせこちらには知識が全くありません。全くです。右も左もJavaJavaScriptもわかりません。スクリプトだかスプリクトだかもよくわからないので、いま一応検索しました。合っていてよかったです。

というわけで、そのレベルの人がちょっとがんばってみた話です。

 

この本を薦めてくれた友人も、別にプログラミングをいま現在バリバリやっているというわけでもなく、むしろこれからそっち方面の仕事をしていくことに決まったという、それくらいのレベルです。のびしろコンビです。今後にご期待ください。

友人とともに「練習として何か作ってみたいよね」というぼんやりとした願望を持ちながら、私はこの本を少しずつ少しずつ読み進めています。

 

この「たのしいプログラミング Pythonではじめよう!」という本は、原題が「Python for Kids」、ずばり「子供のためのPython」です。確かに、少し読んでみると、内容に織り交ぜられた小粋なジョークはアメリカの子供向けのテイストで、これを日本人向けにどう訳すかはいろいろと議論があったそうです(訳者まえがきより)。

さあ、この超初心者向けの本を使って、私にいったい何ができるのでしょうか。

 

インストールから計算、変数、リスト、タプル…

全く知識のない人というのは、予期せぬ段階で突っかかるものです。この本はそんな人にも安心な仕様でした。Pythonのインストール方法を、懇切丁寧に教えてくれました。ここでダウンロードするんですよ〜、ここを押すと開きますよ〜、こうすれば保存できますよ〜…のように、さすが原題通り、子供にもわかるように説明されています。私も子供と足並みをそろえてPython最新版をインストールできました。最初に「Hello World」と表示してみるのはプログラミング界のお約束なんでしょうか。なんかこれは聞いたことあります。

その次は計算です。足し算、引き算、掛け算、割り算。さらにカッコの使い方。小学校の算数を思い出しました。ちょーかしこい電卓みたいなことができるんだなというのを体感しました。

そして変数。中学校の数学で言うところの、代入ですね。これによって文章問題なんかはほぼ文章そのままで計算できることがわかりました。ちょーちょーかしこい電卓ですね。

その後はリストやタプルなど、初めて触れる概念がつらつらと出てきましたが、自分でも意外なほどにつまずきませんでした。「for Kids」はダテじゃないんですね。

全て書いていくと長くなるのでさすがに割愛しますが、その後も順調に読み進めていくことができました。この本、最終的にはゲームを作るところまで行くみたいです。

 

つくったよ〜ん

そのあたりで、先程の友人と、最初に作ってみるもののビジョンが固まりました。日本語で説明してみます。

 

「整数を入力してください」と表示し、入力を要求

入力されたものが整数でない場合、「ばーか!」的なことを返し、要求を無限に繰り返す

8より大きい整数の場合、「でかすぎる」と返し、要求を無限に繰り返す

8より小さい整数の場合、「ちいさすぎる」と返し、要求を無限に繰り返す

8の場合、「はちかよ!」と返し、終了する

 

ザッツ無意味。

 

この無意味オブ無意味が、技術力の少ないわれわれにはとても難しいものでした。(入力を要求する「input」は友人に教えてもらいました)

「while」で繰り返せるところまでは理解したので、まだこの本には出てきていないけど他に必要そうな「関数」とやらを調べてみると、整数かどうかを判定してくれる「isdigit」や、文字列扱いの数字を数字に戻せる(?)「int」というのあたりを使えばよさそうだということがわかりました。(このへんのとんちんかんな言い回しはあたたかい目で見てください。超初心者なので。)

私が読み進めた範囲にはまだそんなのは出てきてないので、実にハイレベルですね…。

たぶん、整数じゃないときに「ばーか!」と言いたいなら「isdigit」は必須なのかなあ、あと、「8より大きい」などを表す不等号(>や<)は文字と数字の間に使えないよというエラーが出るのの対策には、入力された数字に「int」を使えばいいのかなあ…などなど考えました。紆余曲折です。

さらに「while」で繰り返されるところがどうしてもうまくいかず「はちかよ!はちかよ!はちかよ!はちかよ!はちかよ!はちかよ!」みたいになったり、8なのに「ちいさすぎる」「おおきすぎる」などと言われたり、整数じゃないものを入力したのに「はちかよ!」と言われたり、入力に対して無言で終了されたり、ひととおりの失敗はしました。1回目の要求への入力にはちゃんと答えてくれるのに2回目の要求への入力にはおかしい反応をするなど、思った通りに動いてくれなくて、困っちゃいました。

そして、アホみたいな時間をかけて、ついにそのプログラムが完成しました。

 

 

x = input('好きな整数を入力してください:')

while x != 8:

        if x.isdigit() == False:
            print('整数じゃないじゃんおばか!!')
            x = input('好きな整数を入力してください:')
        elif int(x) > 8:
            print('でかすぎる〜〜')
            x = input('好きな整数を入力してください:')
        elif int(x) < 8:
            print('ちいさすぎる〜〜')
            x = input('好きな整数を入力してください:')
        else:
            break

print('はちかよ!')

 

 

とりあえずこれでちゃんと動きました。技術力ゼロながらもここまでがんばりました。

もっとスマートなやり方があったらぜひ教えてください。else:breakはいらない気もします。

これを長時間考えたのもやはりなんとなくいい経験になったような気はしており、正直ちょっとモチベーションが上がりました。思ったように動いてくれたらうれしいですね。もうちょっと何か作れたらいいな、と、思いました。

 

 

(※この記事の用語の間違いなどは大目に見てください。なぜなら知識がほぼゼロなので。)

 

たのしいプログラミング Pythonではじめよう!

たのしいプログラミング Pythonではじめよう!