LoginSignup
0
0

More than 1 year has passed since last update.

3がつく数字と3の倍数でアホになる関数② (小学生高学年向け・python)

Posted at

3がつく数字と3の倍数でアホになる関数②

この記事は、岩手県八幡平市のプログラミング教室「アクセルキャンプ」の公開教材です。
アクセルキャンプ(フリースペースプラウド)のリンク
教材の作成依頼等も承っております。ご意見等は、リンク先の問い合わせ欄からお願いします。
教材の転用・利用等は自由です。


前回のまとめ

前回は3の倍数でアホになる関数と、3のつく数字でアホになる関数を別々に作りました.

①3の倍数でアホになる関数

def baisuu(number):
    if number % 3 == 0: #余りを求めるのは%
        print("アホ!") 
    else:
        print(number)

baisuu(3)

②3のつく数字でアホになる関数

def sanno_tsukukazu(number):   #3のつく数で超アホになる関数
    if "3" in str(number):   #文字に変換したデータに3が入っているかどうか
        print("超アホ!") 
    else:
        print(number)
    
for i in range(1,31):
    sanno_tsukukazu(i)

前回の最後で、この2つの関数を実行したら解決すると思いきや、失敗しましたね!

要件定義

まず、どんなプログラムになってほしいのかを整理しましょう。このように、プログラムの内容を整理することを「要件定義」といいます。

  1. 1から30までの数字を表示(print)する
  2. その途中で、もしその数が3の倍数3で割ったときにあまりが0になる数だったときは、数字じゃなくて「アホ」と表示する。
  3. もしその数が3で割り切れる数じゃなくても、3のつく数字(13,23など)だった場合に「超アホ」と表示する。

出力結果は、こんな感じになるはずです。(もったいないので横書きで書きます)

1 2 アホ 4 5 アホ 7 8 アホ 10 11 アホ 超アホ... ...28 29 超アホ

2と3の部分に注目してみましょう。この場合、「3」の数字は、アホになりますか?超アホになりますか?
そう、このプログラムでは、先に3の倍数かどうかのチェックがif文で行われ、もし3の倍数だった場合はアホになり、3の倍数でなかった場合のみ、更に3がついているかのチェックが行われ、ついていた場合は、「超アホ」になります。つまり、2つとも条件を満たしている3は「アホ」になります。

実装しよう

要件定義が終わったあと、実際にコードを書いていくのを「実装」などといいます。では、順番に実装していきます。1の部分の実装は前回までの知識でできます。関数を使ってやってみましょう。

def aho(number):
    print(number)

for i in range(1, 31):
    aho(i)

関数名が「アホ」になってますね。引数はわかりやすくnumberという名前です。引数として受け取ったデータをそのままprint()で表示しています。

では早速、2の実装をしていきましょう。これはまさに、前回やったところですね。時間がかかってもいいので、自分でやってみましょう。if文を使って、3の倍数かどうかをチェックします。

def aho(number):
    if number % 3 == 0:
        print("アホ")

for i in range(1, 31):
    aho(i)

ifの条件を組み合わせよう

さて、ここが今日のメインテーマです。
皆さんの人生、うまくいってますか?みなさんまだ小学生なのでアレですが、子供の頃は「もし自分の将来がこうだったらいいなー」みたいなことを想像したりするものです。そうなれる人もいれば、なれない人もいて、もしくは「なれたらいいな」という基準が大人になって変わって来たりするものです。先生は幼稚園児の頃「消防士さんになりたい」とかって言ってたらしいですが、いま考えると、あんなきついハードワーク、マヂで無理!とかって思います。
余談はさておき、if文でチェックしたときにそのとおりである場合もあれば、そうでない場合もあって、そうでないときにまたもう一つチェックしたいことがあって、みたいな状況があります。
皆さんこの時期プールに入りますよね?その日プールが使えるかどうか、学校の先生がどうやってチェックしているか、わかりますか?

天候は大丈夫か?
プールがよごれていないか?
水温は大丈夫か?
気温は大丈夫か?

などの項目を順番にチェックしていって、全部OKならプールOK!となります。
では、これをpythonプログラム風に書いてみるとどうなるでしょう。

if 雨が降っている:  
    プール禁止!
elif プールが汚れている:
    プール禁止!
elif 水温が高すぎる・低すぎる:
    プール禁止!
elif 気温が高すぎる・低すぎる:
    プール禁止!
else:
    プールOK!!!

elif ってなんやねん

先週やったif文と、elseに加えて、elifというのが追加されてますね。
これは英語のelse if の略で、pythonではこれを省略してelifと書きます。「エルイフ」と読みます。
elifを「そうじゃなくてもし」と読み替えて、上のプログラムを読んでみましょう。

「もし」雨が降っていたら:プール禁止
「そうじゃなくてもし」プールが汚れていたら:プール禁止
「そうじゃなくてもし」水温が高すぎ・低すぎのとき:プール禁止
「そうじゃなくてもし」気温が高すぎ・低すぎのとき:プール禁止
「そうじゃないとき」:プールOK!!!

てな感じです。まとめると。

  • elifは、その前に出てきたifの条件には当てはまらない場合に、更にif文でチェックしたいときに使う
  • elseは、それまで出てきたどの条件にも当てはまらなかったときに、あきらめて処理を行うときに使う。(もうこれ以上ifが必要ないとき)

では、aho()関数に戻りましょう。
2・3の条件を、一つのif文にまとめると、こういう感じになります。

def aho(number):
    if number % 3 == 0:
        print("アホ")
    elif "3" in str(number):
        print("超アホ")
    else:
        print(number)

for i in range(1, 31):
    aho(i)

実行してみましょう!皆さんちゃんとアホになりましたでしょうか。

elifの性質上、elifがifより先に書かれることはないですし、elseの後ろに来ることもありません。なんにも言われてないのに「そうじゃなくてもし!」って言われたら、ビビリますよね??
elifはいくつでも追加することができます。ここではやりませんが、試しに4で割り切れる数は「ウルトラアホ」になるelifなどを追加してみてください。


宿題!

①4でわったらあまりが3になる数は「あまり3」と表示される関数を作ってください。表示するのは、1から40までです。

② ①のプログラムを改良して、elifを使って、「そうじゃなくて、3の倍数だったときに」「あまりは3じゃないけど3の倍数」と表示するプログラムを書いてください。


プログラムはそれぞれ paizaのサイト で実行しましょう。
しっかり復習してね!ではまた来週!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0