条件分岐(解答)#

演習1:真偽値と条件式#

例題#

xy より小さい」を,比較演算子を用いて記述せよ. なお,変数 xy にはあらかじめ条件式が「True」となる適当な数値を代入しておくこと.

# 解答用セルの記入例
x = 1
y = 2

x < y
True

演習1-1#

xy より大きい」を,比較演算子を用いて記述せよ. なお,変数 xy にはあらかじめ条件式が「True」となる適当な数値を代入しておくこと.

# 解答例
x = 5
y = 3

x > y
True

演習1-2#

xy と等しい」を,比較演算子を用いて記述せよ. なお,変数 xy にはあらかじめ条件式が「True」となる適当な数値を代入しておくこと.

# 解答例
x = 3
y = 3

x == y
True

演習1-3#

xy と等しくない」を,比較演算子を用いて記述せよ. なお,変数 xy にはあらかじめ条件式が「True」となる適当な数値を代入しておくこと.

# 解答例
x = 3
y = 1

x != y
True

演習1-4#

xy 以上である」を,比較演算子を用いて記述せよ. なお,変数 xy にはあらかじめ条件式が「True」となる適当な数値を代入しておくこと.

# 解答例
x = 5
y = 3

x >= y
True

演習1-5#

xy 以下である」を,比較演算子を用いて記述せよ. なお,変数 xy にはあらかじめ条件式が「True」となる適当な数値を代入しておくこと.

# 解答例
x = 3
y = 5

x <= y
True

演習1-6#

「リスト [1, 3, 5, 7, 9] の中に 6 が含まれているか?」を比較演算子を用いて記述せよ.

出力例

False
# 解答例
6 in [1, 3, 5, 7, 9]
False

演習1-7#

「文字列 I have an apple に,部分文字列 apple が含まれているか?」を,比較演算子を用いて記述せよ.

出力例

True
# 解答例
'apple' in 'I have an apple'
True

演習1-8#

「文字列 programming の長さが10文字以上か?」を,比較演算子を用いて記述せよ.

ヒント

文字列の長さを取得するには,どうすればよかったか思い出そう. 忘れた人は,前回の教材 を確認されたい.

出力例

True
# 解答例
len("programming") >= 10
True

演習2:if#

演習2-1#

変数 a の値が 5 と等しければ「5と等しいです」と表示するプログラムを書け. なお,変数 a には適当な値を代入しておき,プログラムの実行結果も表示せよ.

# 解答例
a = 5

if a == 5:
    print('5と等しいです.')
5と等しいです.

演習2-2#

文字列の変数 s が部分文字列 apple を含む場合、「appleが含まれています」と表示するプログラムを書け.なお,変数 s には適当な値を代入しておき,プログラムの実行結果も表示せよ.

# 解答例
s = 'I like apple pie.'

if 'apple' in s:
    print('appleが含まれています.')
appleが含まれています.

演習3:if ... else#

演習3-1#

変数 a の値が 3 で割り切れるときは「3で割り切れます」,そうでないときには「3で割り切れません」と表示するプログラムを作成せよ. なお,変数 a には適当な値を代入しておき,プログラムの実行結果も表示せよ.

ヒント

「割り切れる」を表現するためには,a3 で割った余りが 0 と等しくなればよい. 余りの計算方法は 第1回 または 第2回 の教材を参照されたい.

# 解答例
a = 15

if a % 3 == 0:
    print('3で割り切れます')
else:
    print('3で割り切れません')
3で割り切れます

演習3-2#

人数に応じて,団体割が適用されるかどうかを判定するプログラムを考える.ここでは,人数が15名以上だったら団体割が適用されるとする.

人数を表す変数 number の値が 15 以上であれば「団体割が適用されます」,そうでなければ「団体割が適用されません」と表示するプログラムを作成せよ. なお,変数 number には任意の値を代入し,プログラムの実行結果も表示せよ.

# 解答例
number = 13

if number >= 15:
    print('団体割が適用されます')
else:
    print('団体割が適用されません')
団体割が適用されません

演習4:if ... elif ... else#

参加者の年齢に応じて,適切な入場料金を表示するプログラムを考える. ここでは,3歳児以下は無料,15歳児以下は子供料金,そうでなければ大人料金となるとする.

年齢を表す変数 age の値が 3 以下であれば「入場料は無料です」,15 以下であれば「子供料金が必要です」,そうでなければ「大人料金が必要です」と表示するプログラムを作成せよ. なお,変数 age には任意の値を代入し,プログラムの実行結果も表示せよ.

# 解答例
age = 13

if age <= 3:
    print('入場料は無料です')
elif age <= 15:
    print('子供料金が必要です')
else:
    print('大人料金が必要です')
子供料金が必要です

演習5:複数条件の組み合わせ#

演習5-1#

文字列の変数 s が,部分文字列 apple または banana を含む場合,「果物が含まれています」と表示するプログラムを書け. なお,変数 s には適当な値を代入しておき,プログラムの実行結果も表示せよ.

# 解答例
s = 'I like apple pie.'

if 'apple' in s or 'banana' in s:
    print('果物が含まれています.')
果物が含まれています.

演習5-2#

変数 x の値が「0でなく」かつ「2で割り切れる」場合のみ「条件に合致します」と表示し,そうでない場合に「条件に合致しません」と表示するプログラムを作成せよ. なお,変数 x には適当な値を代入しておき,プログラムの実行結果も表示せよ.

# 解答例
x = 2

if x != 0 and x % 2 == 0:
    print('条件に合致します')
else:
    print('条件に合致しません')
条件に合致します

演習6:発展課題#

これ以降は発展的な演習課題となります. 解くことは必須ではありませんが,条件分岐を応用する良い練習になるので,ぜひチャレンジしてみてください.

演習6-1:FizzBuzz問題#

変数 number の値に対し,次のことを出力せよ.

  • 3 で割り切れて 5 で割り切れないときは「Fizz」と出力

  • 5 で割り切れて 3 で割り切れない時は「Buzz」と出力

  • 両方で割り切れるときは「FizzBuzz」と出力

  • 両方で割り切れないときは,入力した数をそのまま出力

なお,変数 number には適当な値を代入し,プログラムの実行結果も表示せよ.

# 解答例①
# 上記の要件をそのままプログラムに落とし込むと以下のようになる(ただしやや冗長な書き方である).
number = 15

if number % 3 == 0 and number % 5 != 0:
    print('Fizz')
elif number % 5 == 0 and number % 3 != 0:
    print('Buzz')
elif number % 5 == 0 and number % 3 == 0:
    print('FizzBuzz')
else:
    print(number)
FizzBuzz
# 解答例②
# もう少しコンパクトに書いた場合.条件式は上から順番に判定されることを利用している.
number = 15

if number % 3 == 0 and number % 5 == 0:
    print('FizzBuzz')
elif number % 3 == 0:
    print('Fizz')
elif number % 5 == 0:
    print('Buzz')
else:
    print(number) 
FizzBuzz

演習6-2:うるう年判定プログラム#

年(西暦)を表す変数 year の値が,うるう年かどうかを判定するプログラムを作成せよ. なお,変数 year には適当な値を代入し,プログラムの実行結果も表示せよ.

💡 うるう年の規則

  • 「400で割り切れる」年はうるう年

    • たとえば,2000年はこれを満たすのでうるう年

  • 「4で割り切れる」かつ「100で割り切れない」年はうるう年

    • たとえば,2020年はこれを満たすのでうるう年

  • 上記の両方とも満たさない場合はうるう年ではない

    • たとえば,2100年は4で割り切れるが,100でも割り切れるので,うるう年ではない

# 解答例
year = 2020

if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
    print('うるう年です')
else:
    print('うるう年ではありません')
うるう年です

演習6-3:3の倍数と3のつく数#

変数 number の値に対し,3の倍数と3のつく数の時だけ「3に関する数です」と出力するプログラムを作成せよ.なお,変数 number には適当な値を代入し,プログラムの実行結果も表示せよ.

# 解答例
number = 13

if (number % 3 == 0) or ('3' in str(number)):
    print('3に関する値です')
3に関する値です

💡 解答の解説

おそらく躓きやすいポイントとしては,「3のつく数かどうか」を条件式としてどのように表現するか,であろう.

上記の解答例では,第4回で学んだ 文字列に対するin を用いて,「number の中に 3 が含まれているか?」を条件式として表現している. ただし,変数 number には数値が格納されているため,str() を用いて文字列型に変換している(str() の復習は こちら).

例えば number = 13 の場合,「文字列 '13' の中に文字 '3' が含まれているか?」という条件式を考えていることになる.