みなさん、こんにちはケンケンです。
Pythonの基本をお送りしています。
前回は、for文と条件分岐の基本をお伝えしました。
前回の記事は以下をご覧ください。
みなさん、こんにちはケンケンです。 Pythonでプログラミングの基礎をご紹介しています。 前回は、if文を使った条件分岐についてお伝えしました。 [sitecard subtitle=前回記事 url[…]
今回は、乱数を発生させる関数を使ってより複雑な条件分岐を勉強していきます。
それでは、以下ご覧ください。
前回の復習
前回は、for文の基礎をお伝えしました。
ペンギンを仲間にするために5回仲間に誘って、ようやくOKをもらいました。
人気者のペンギンなだけに口説き落とすのに苦労しました。

コードと実行結果は以下で確認してください。
▶for文の基本
1 2 |
for cnt in range(5): print(cnt) |
▶for文とIf文をミックス
1 2 3 4 5 6 7 |
master = input('あなたの名前は?') if(master): for cnt in range(1,6): print(master + 'はぺんぎんを' + str(cnt) + '回仲間に誘った') print('ぺんぎんはよろこんでついてきた') else: print('名無しはひとりで旅を続けた') |
▶実行結果
主人公とペンギンの行動を交互にしてみよう
さあ、今回はペンギンに主人公のアプローチに一回一回反応をしてもらいましょう。
今回もペンギンに協力してもらいます。

主人公はあなたです。
まずは、あなたがひとつ行動したらペンギンもひとつ行動を返すように繰り返し処理を工夫してみましょう。
コードは以下の通りです。
※コードを書くための準備やファイルの作り方は以下の記事で復習して下さい。
みなさん、こんにちはケンケンです。 今回は、Pythonを使って簡単なプログラミングをします。 なぜ、Pythonを紹介するかと言うと、Pythonは様々な機能をもった言語で学びやすいという 特徴がある[…]
▶for文とIf文で交互にアクションを起こす
1 2 3 4 5 6 7 8 9 10 11 12 |
master = input('あなたの名前は?') penpen1 = 'ぺんぎんは考えている'#ペンギンの行動パターン1 penpen2 = 'ぺんぎんは仲間になった!'#ペンギンの行動パターン2 if(master): for cnt in range(10): if cnt % 2 == 0:#① print(master + 'はぺんぎんを仲間に誘った') else:#① print(penpen1) print(penpen2)#繰り返し処理終了後パターン2を実行 else: print('名無しはひとりで旅を続けた') |
全体的な流れは、ペンギンの行動パターンを2つ用意し、
主人公の行動の次にパターン1(penpen1)を実行し、
for文が終了したらパターン2(pnepen2)を実行します。
コードの解説
①「if cnt % 2 == 0:」は変数cntを2で割った余りが0であるかどうかを確認するコードです。
余りが0の場合とは変数が偶数の時です。
よって変数が偶数の時は主人公の行動、奇数の場合はelse以下のペンギンの行動(penpen1)が実行されることになります。
ちなみに「%」は算術演算子です。以前にご紹介していますので復習したい方は以下をご覧ください。
みなさん、こんにちはケンケンです。 Python(パイソン)の紹介をしています。 前回は、Pythonとはどういう言語かや簡単なコードを書いて実行するところまでご紹介しました。 [sitecard su[…]
それでは、実行してみましょう。
前回は主人公の一方通行でしたが、今回はペンギンが一回一回考えてくれました。
交渉っぽくなってきましたね。

主人公の行動が変わるとペンギンも反応を変えてくれるのか
もっと交渉らしさを加速させるためにもう少し工夫してみましょう。
パターンを増やしてそれぞれのパターンがランダムで出現するようにします。
そこで使うのがrandom関数です。
random関数とは
print関数やint関数などは勉強しましたが、random関数はこれらとは少し性質が違う関数です。
モジュールを読み込んでからでないと使えませんし、書式も違います。
モジュールとはコードが書かれたファイルのことです。
Pythonはをインストールするとモジュールといわれるファイルもインストールされているのです。
そして、このモジュールの中にrandom関数は存在します。
よって、Pythonでrandom関数を使いたいときはモジュールを読み込まなければなりません。
読み込むことをインポートと呼びます。
▶インポートの書式
import モジュール名
この書式でモジュール(ファイル)を読み込むことができます。
それでは、インポートしたrandomモジュールはどのように使うのでしょうか。
▶random関数の書式
random.random()
ん?と思いますよね。
一つ目のrandomはモジュール名、二つ目のrandomは関数名です。
どういうことかというと、モジュールから読み込んだものであることを証明するために、
まずモジュール名を記述する必要があるのです。
今回は、randomモジュールをインポートしたので出だしがrandomなのです。
二つ目のrandomは関数で、この関数はランダムな数値を発生させます。
この2つを「.(コロン)」で挟むことで関数を使用できるのです。
では、この書式に従ってコードを書いて実行してみましょう。
▶random関数の例
1 2 3 4 5 |
import random for cnt in range(10): penpen1 = random.random() print(penpen1) |
続いてrandom関数の仲間randint関数を紹介します。
randint関数とは
▶randint関数の書式
random.randint(数値A,数値B)
この関数は、数値Aと数値Bの間で乱数を発生する関数です。
実はこの関数、みなさんも親しみがあるあの関数が隠れています。
そうint関数です。intは整数のデータ型を表していましたね。
つまり、発生した乱数を整数に変換してくれるオプションが付いているのです。
さて、この関数を使った例を以下で確認してください。
▶randint関数の例
1 2 3 |
for cnt in range(10): penpen2 = random.randint(1,10) print(penpen2) |
randint関数を使った条件分岐をマスターしよう
主人公の行動とペンギンの行動を2つずつ用意してイベントがランダムに発生するように工夫しましょう。
randint関数によって出た数値に従って行動を分けます。
具体的にはコードをご覧ください。
▶randint関数と条件分岐を組み合わせたコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import random print('ぺんぎんがあらわれた!') master = input('あなたの名前は?') master1 = master + 'はえさをあげた'#① master2 = master + 'は仲間に誘った'#① penpen1 = 'ぺんぎんはよろこんでいる'#① penpen2 = 'ぺんぎんは考えている'#① if(master): print(master + 'はぺんぎんを仲間にしたがっている')#② for cnt in range(10):#③ x = random.randint(1, 10)#④ if x <= 3:#⑤ print(master1) elif x >= 4 and x <= 6:#⑥ print(master2) elif x >= 7 and x <= 9:#⑦ print(penpen1) else:#⑧ print(penpen2) print('ぺんぎんはよろこんでついてきた') else: print('名無しはひとりで旅を続けた') |
コードの解説
①主人公側とペンギン側で2つずつ行動を設定し、各変数に格納します。
②繰り返し処理の前に主人公側がアクションを起こします。
③10回繰り返します。
④randint関数で1~10までのランダムな整数を発生させます。
⑤関数で生成された整数が3以下の場合にmaster1を実行します。
⑥関数で生成された整数が4以上6以下の場合にmaster2を実行します。
⑦関数で生成された整数が7以上9以下の場合にpenpen1を実行します。
⑧上記以外の整数の場合にpenpen2を実行します。
それでは、実行して以下のようになることを確認しましょう。
主人公が奥の手を使うと・・・・
繰り返し作業をしていても最後まで処理を実行するとは限りません。
ある一定の回答を得ることができたらプログラムを離脱する処理はけっこうあります。
今回は、主人公がアニマルボールを投げた場合は100%ペンギンが仲間になる、
という設定でコードを書いてみましょう。
whileで条件に合致するまで繰り返してみよう
条件によっては何回繰り返せば良いか分からないときがありますね。
そんなときはwhileを使って「○○が成立するまで」繰り返すことができます。
▶whileの書式
while 条件式:
繰り返す処理
今回は、for文でも書くことができますが、参考までに覚えておきましょう。
コードはあとでお見せします。
breakでループをぶっ壊~す
while文やfor文は同じ処理を繰り返してくれる便利な構文ですが、途中でループから離脱したい時があります。
そういう時はbreak文を使ってループから離脱することができます。
それではwhile文とbreak文を使ったプログラムを書いてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import random print('ぺんぎんがあらわれた!') master = input('あなたの名前は?') master1 = master + 'はえさをあげた' master2 = master + 'は仲間に誘った' master3 = master + 'はアニマルボールを投げた'#① penpen1 = 'ぺんぎんはよろこんでいる' penpen2 = 'ぺんぎんは考えている' cnt = 0#② while cnt < 10:#③ x = random.randint(1, 10) if x <= 3: print(master1) elif x >= 4 and x <= 6: print(master2) elif x >= 7 and x <= 8: print(penpen1) elif x == 9: print(penpen2) else: print(master3)#④ print('ぺんぎんはよろこんでついてきた') break#④ cnt = cnt + 1#⑤ if cnt == 10:#⑥ print('ペンギンは海へ帰ってしまった・・・') |
コードの解説
①アニマルボールを投げるパターンをmaster3に格納します。
②while文を使うための変数cntに初期値として0を与えています。
③cntが10になるまでwhile以下の処理を繰り返します。
④else以下の条件が満たされたときにmaster3を実行します。
この条件が満たされたときペンギンは仲間になります。
仲間になったらそれ以降の処理をする必要がないのでbreak文を使ってコードを離脱します。
⑤for文と違って変数が自動で加算されることはありません。
なので、一連の処理が終わったらcntに値を1追加しています。
この文は右辺を左辺に代入するという意味なのでcntが1の場合は右辺はcnt+1は2になり、2が左辺に代入されるので
結果的にcntの値が2になります。
この文は「cnt +=1」と書くこともできます。これは複合代入演算子というものです。
Pythonではこのように書くこともできるので、覚えておくと良いでしょう。
⑥10回繰り返してもアニマルボールを選択できなかったらペンギンが逃げてしまう設定にしました。
さあこれでコードを実行してみましょう。
▶10回以内にアニマルボールを使った時
▶アニマルボールが10回出ない時

まとめ
いかがでしたか。
random関数やbreak文を組み合わせると条件によって複雑なアクションを実行することが可能になりましたね。
いずれも基本的事項なので不安がある方は、何度も復習しておきましょう。
次回はさらに文法についてご紹介していきたいと思います。
覚えることが多いですが、がんばっていきましょう。
それでは、また次回お会いしましょう。



