ロジカ式logo

はじめての
Python

ページ一覧に戻る
Lesson13-2 複雑な条件判断
すごろく

使い方の例

True サイコロ
ロボた

2つのサイコロを振ったとき、どちらか一方が奇数だったなら「True」と判断するプログラムを考えるよ!

まずは、「乱数」でサイコロを作ろう!
サイコロだから、範囲は「1~6」だね!

ロボち
ロボた

それに、「サイコロA」と「サイコロB」の2つ分の整数値を「乱数」で作る必要があるよ!

サイコロができたら、「サイコロAが奇数かどうか」と「サイコロBが奇数かどうか」を、それぞれ「if文」で判断すればいいね!

ロボち
ロボた

そうすると、こんなプログラムになったよ!

EXAMPLE
import random diceA = random.randint(1, 6) diceB = random.randint(1, 6) if diceA % 2 == 1: print("サイコロAは", diceA, ":奇数") else: print("サイコロAは", diceA, ":偶数") if diceB % 2 == 1: print("サイコロBは", diceB, ":奇数") else: print("サイコロBは", diceB, ":偶数")
ロボた

でも、これだと「どちらか一方が奇数なら、True」という判断ができていないよね!

フラグ変数を追加して、「サイコロA」と「サイコロB」が「奇数」か「偶数」かの状態を持たせるようにすればいいんだ!

ロボち
ロボた

サイコロが偶数だったら「False」、奇数だったら「True」になるようにすればできそうだね!

フラグ変数 サイコロ

フラグ変数「result」を追加して、サイコロの目が奇数のときには「True」を代入するようにしたよ!
これで、「どちらかのサイコロが奇数」かどうか判断できるよ!

ロボち
EXAMPLE
import random diceA = random.randint(1, 6) diceB = random.randint(1, 6) result = False if diceA % 2 == 1: print("サイコロAは", diceA, ":奇数") result = True else: print("サイコロAは", diceA, ":偶数") if diceB % 2 == 1: print("サイコロBは", diceB, ":奇数") result = True else: print("サイコロBは", diceB, ":偶数") if result == True: print("どちらか一方が奇数") else: print("どちらも偶数")
ロボた

「if文」が続いて、ちょっとややこしいプログラムになっちゃったね!

わかりにくいかもしれないけど、コードをしっかり確認して、がんばって理解してね!

ロボち

やってみよう

⌨️1
朝食をちゃんと食べたかどうかを判定するプログラムを作ってください。

・朝食のメニューは、パンとご飯です。
・どちらか一方でも食べたら「True」と判断します。
・両方食べても「True」と判断します。
・でも、どちらも食べなかったら「False」と判断します。
・パンとご飯のどちらを食べたかは、乱数を使ってください。
・乱数が「0」なら「食べていない」、「1」なら「食べた」としてください。

PRACTICE

📖 解答例と解説

import random

rice = random.randint(0, 1)
bread = random.randint(0, 1)
breakfast = False

if rice == 1:
    print("朝食にご飯を食べた")
    breakfast = True
else:
    print("朝食にご飯を食べなかった")

if bread == 1:
    print("朝食にパンを食べた")
    breakfast = True
else:
    print("朝食にパンを食べなかった")

if breakfast == True:
    print("朝食をちゃんと食べた")
else:
    print("朝食を食べなかった")
ロボた

こんなふうに、生活の中の身近な状況をプログラムにしていくんだよ!

「宿題かお手伝いのどちらかを終えたら、ゲームができる」なんていうのも、どんなプログラムにできるか考えてみてね!

ロボち

使い方の例

ロボた

次は、「サイコロAが奇数のとき、さらにサイコロBも奇数」なら「True」と判断し、 「2つとも奇数」と表示するプログラムを考えるよ!

奇数サイコロ

「サイコロAが奇数」で、なおかつ「サイコロBも奇数」と、条件が絞り込まれていくようなイメージだね!

ロボち
ロボた

こんなときのプログラムは、「if文」の中に「if文」を作るといいんだ!

こんなプログラムになるよ!

ロボち
EXAMPLE
import random diceA = random.randint(1, 6) diceB = random.randint(1, 6) if diceA % 2 == 1: print("サイコロAは", diceA, ":奇数") if diceB % 2 == 1: print("サイコロBも", diceB, ":奇数") print("2つとも奇数") else: print("サイコロBが", diceB, ":偶数") else: print("サイコロAは", diceA, ":偶数")
ロボた

「サイコロA」と「サイコロB」のどちらも「奇数」のときだけ、「2つとも奇数」と表示されるのを確認してね!

いくつかの条件がすべて成立するならば「True」と判断したいときは、 「if文」の中に「if文」を作って、「ネスト(入れ子)」構造にすればいいんだよ!

ロボち

やってみよう

⌨️1
「外で遊ぶ」か「家でゲームをする」かを判定するプログラムを作ってください

・学校が休みという条件のとき、天気が「雨」なら「家でゲームをする」そうでないなら「外で遊ぶ」と判断します。
・乱数で、「休校日:1」、「登校日:0」としてください。
・天気は、「晴れ:1」、「曇り:2」、「雨:3」としてください。

PRACTICE

📖 解答例と解説

import random

school = random.randint(0, 1)
weather = random.randint(1, 3)

if school == 1:
    print("学校が休み")
    if weather == 3:
        print("天気は雨")
        print("家でゲームをする")
    else:
        print("天気は雨ではない")
        print("外で遊ぶ")
else:
    print("学校が登校日")
ロボた

天気を判断する条件式は他の方法も考えられるから、解答例のとおりでなくても大丈夫だよ!

何度も実行して、正しく判定できているか必ず確かめるようにしてね!

ロボち
ロボた

条件判断が複雑になると、「if文」も複雑な構造になっていくよ!

次は、複雑な条件判断をするときに使う、「or」と「and」について学ぶよ!

ロボち
POINT
  •   生活の中にはどんな条件判断があるか考えると、プログラミングが上達する。