よーじ通信

底辺社内ニートがプログラミングや役に立ちそうなネタを書いています

よーじ通信

【Python入門】プログラミング超初心者が0からはじめる入門編 vol.10

f:id:youji11410:20170104104904j:plain

知識ゼロの超初心者がプログラミング初挑戦でPythonをはじめました。第10回目は、実践的なプログラムを作ってみよう!

 

 

第13章 ゲームをつくってみよう

13-1 簡単なゲームをつくる

Fizz Buzz(フィズ・バズ)ゲームってご存知ですか?

1から順番に数えて、3で割り切れる数字のときには「Fizz」

5で割り切れる数字のときには「Buzz」

3と5の両方で割り切れるときには「Fuzz Buzz」というゲームです

 

3の倍数でアホになる、みたいなことですね

単語には大した意味はないので深く考えなくて大丈夫です

 

では、このゲームをプログラミングしてみましょう

 

どういう手順で組むか整理すると

  1. 数字の終わりを決める
  2. 1から順番に表示する
  3. 3で割り切れる数字を「Fizz」と表示
  4. 5で割り切れる数字を「Buzz」と表示
  5. 3と5両方で割り切れる数字を「Fizz Buzz」と表示

となります

 

13-2 まずは最初から最後までの数字を表示させる

ファイル名をmain.pyとして、コードを書いていきます

キャプチャの処理が面倒なので、ここではCodingGroundで作業をしていきます

 

f:id:youji11410:20170104192445p:plain

数字を全て表示するコマンドは

range()関数でした

これで10までのリストを作り、取り出してみましょう

forループを使えば簡単に取り出せましたね

 

f:id:youji11410:20170104192623p:plain

先程の方法では0から表示されてしまいます

なので、print i+1と入力し、1から表示させます

 

f:id:youji11410:20170104192727p:plain

また、print i+1,とコンマを加えることで、改行せずに表示してくれます

 

13-3 条件付けをする

13-2で、手順1と手順2を行うことができました

次は、手順3.3で割り切れる数字を「Fizz」と表示を行います

 

3で割り切れる数字とは、3で割った時に余りが0となる数字の事をいいます

余りを表示するには「%」を使います

試しに、対話モード(CodingGroundの緑画面)にて、確認してみましょう

 

f:id:youji11410:20170105222846p:plain

一番上は3÷3=0ということを意味していますね

6÷3も余りが0なので、0が表示されています

これを利用して、条件付けをします

 

f:id:youji11410:20170105193108p:plain

一行目:10までのリストを作って、iという変数にリスト内の数字を入れ替えて繰り返し表示するというコマンド

二、三行目:もし、i+1を3で割った時に0になる場合は、Fizzと表示するというコマンド

四、五行目:それ以外はi+1を表示するというコマンド

になりますね

うまくいきました

(i+1)%3と記述するのは、数学と同じで【i+1%3】だと、1÷3+1という計算をしてしまうので、結果が変わってしまいます

気をつけましょう

 

それでは、5で割り切れる数字の場合には、Buzzを表示するコマンドを付け加えましょう

 

f:id:youji11410:20170105195028p:plain

先程のコードに、【elif(i+1)%5 ==0:】を加えました

緑画面の結果にうまく表示されていますね

 

今度は、3と5両方で割ると余りが0になる数字をFizzBuzzに置き換える条件を加えます

 

f:id:youji11410:20170105195356p:plain

画像で気がついた方はこれまでの学習をしっかりしてきた方です

elifで三つ目の条件として加えてありますね

この場合は、15となる数字に対して、一つ目の条件である3で割ると余り0の条件が先に適用されてしまいました

よって、【elif (i+1) % 3 == 0 and (i+1) % 5 == 0:】は一つ目の条件にする必要があります

 

f:id:youji11410:20170105195542p:plain

今度は、15がちゃんとFizzBuzzと表示されました

コンマを入れることで、改行せずにきましたが、数字が多くなると見にくくなります

そこで、FizzBuzzが出た時点で改行するようにしてみます

FizzBuzzのコンマをなくせば改行します

 

f:id:youji11410:20170105195833p:plain

 

まとめ

ゲームをつくろう!と意気込んでみましたが、やったことはこれまでの作業と変わりませんでしたね

他の条件を加えたり、(i+1)を他の変数に置き換えて、シンプルなコードにしたりするなど、改造して遊んでください

残り3回で修了です!

スポンサーリンク

▼関連記事▼

【Python入門】プログラミング超初心者が0からはじめる入門編 vol.11

© 2016 よーじ通信