---
title: Python AtCoder入門 第３講 条件分岐
tags: 
author: [佐藤](https://docswell.com/user/aomori_sato)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/9E29QX6R7R.jpg?width=480
description: Python AtCoder入門 第３講 条件分岐 by 佐藤
published: September 19, 26
canonical: https://docswell.com/s/aomori_sato/5DMVVV-2026-09-19-183228
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/9E29QX6R7R.jpg)

Python AtCoder入門
第3講 条件分岐
第2講までで、入力を受け取って計算し、出力できるようになりました。
この講では、入力に応じて処理を変える 条件分岐 を扱います。
1


# Page. 2

![Page Image](https://bcdn.docswell.com/page/D7Y4W895EM.jpg)

今回のテーマ
「もし〜だったら、こうする」
この判断ができるようになると、解ける問題の幅が一気に広がります。
AtCoderのA問題の多くは、
入力 → 条件分岐 → 出力
という形です。
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/VENY9QL4J8.jpg)

この講のゴール
この講のゴールは、
条件の書き方と、場合分けの整理の仕方に慣れること
です。
文法自体はシンプルですが、順番を間違えると答えが変わります。
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/Y79P2D44E3.jpg)

コードファイル名の方針
この講でも、コード例ごとにファイル名を付けます。
例：
compare.py
grade.py
range_check.py
yes_no.py
leap_year.py
手元では同じ名前で保存して実行してください。
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/G78D53QV7D.jpg)

3-1 if / elif / else
条件分岐では、
if
elif
else
を使います。
まずは基本の形を覚えましょう。
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/L7LMYVXRJR.jpg)

if の基本形
if 条件:
条件が True のときの処理
条件が成り立つときだけ、下のブロックが実行されます。
条件が成り立たなければ、何も実行されません。
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/4EMYNGLPEW.jpg)

2つに分けるなら else
if 条件:
条件が True のときの処理
else:
条件が False のときの処理
は、
それ以外
を表します。
else
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/PER9DZKYJ9.jpg)

3つ以上に分けるなら elif
if 条件A:
Aのときの処理
elif 条件B:
Aではなく、Bのときの処理
else:
どれにも当てはまらないときの処理
は else if の略です。
いくつでも並べられます。
elif
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/P7XQ19L4EX.jpg)

インデントがブロックを作る
Pythonでは、
行頭の空白
でブロックを表します。
if x &gt; 0:
print(&quot;Positive&quot;)
print(&quot;Done&quot;)
print(&quot;End&quot;)
インデントされている2行だけが if の中身です。
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/37K92PLP7D.jpg)

indent.py
x = 5
if x &gt; 0:
print(&quot;Positive&quot;)
print(&quot;Done&quot;)
print(&quot;End&quot;)
出力：
Positive
Done
End
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/LJ3W4X34J5.jpg)

if の外にある処理
次の行は、インデントされていません。
print(&quot;End&quot;)
そのため、 if の条件に関係なく常に実行されます。
Pythonではインデントがとても重要です。
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/8JDKQ245EG.jpg)

インデントは半角スペース4個
Pythonでは、
半角スペース4個
でインデントするのが標準です。
深さがずれると、
IndentationError
になり、プログラムが動きません。
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/VEPKL1MD78.jpg)

エラーが出たらインデントを疑う
初心者がよく出すエラーの1つが、
IndentationError
です。
特に、
行頭の空白が足りない
空白の数がそろっていない
タブとスペースが混ざっている
場合に起こります。
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/27VVQY9G7Q.jpg)

比較演算子
条件を書くときは、比較演算子を使います。
演算子
==
!=
&lt;
&gt;
&lt;=
&gt;=
意味
等しい
等しくない
より小さい
より大きい
以下
以上
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/5JGLW94D7L.jpg)

= と == の違い
=
は代入です。
x = 5
==
は比較です。
if x == 5:
print(&quot;Yes&quot;)
等しいかどうかを調べるときは、 == を使います。
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/47QY3WGXEP.jpg)

bool.py
print(3 &lt; 5)
print(3 == 5)
出力：
True
False
比較の結果は、
True
False
という値になります。
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/KE4W1K52J1.jpg)

compare.py
# Read two integers separated by a space
A, B = map(int, input().split())
# Compare and print the result
if A &gt; B:
print(&quot;A is larger&quot;)
elif A &lt; B:
print(&quot;B is larger&quot;)
else:
print(&quot;Equal&quot;)
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/L71YGXWKJG.jpg)

compare.py の実行例
入力例：
7 3
出力例：
A is larger
A &gt; B
でも A &lt; B でもない場合は、 A == B です。
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/G7WGKN6PE2.jpg)

else は「残り全部」
「残りの場合」が1通りしかないとわかっているなら、
else:
で受けられます。
条件をもう一度書かなくてよいので、コードがすっきりします。
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/4JZLZ3Y6E3.jpg)

grade.py
# Read a score
N = int(input())
# Assign a grade
if N &gt;= 80:
print(&quot;A&quot;)
elif N &gt;= 60:
print(&quot;B&quot;)
elif N &gt;= 40:
print(&quot;C&quot;)
else:
print(&quot;D&quot;)
20


# Page. 21

![Page Image](https://bcdn.docswell.com/page/YE6WZXDLEV.jpg)

grade.py の実行例
入力例：
72
出力例：
B
72
は N &gt;= 60 を満たすので、そこで分岐が決まります。
21


# Page. 22

![Page Image](https://bcdn.docswell.com/page/GE5MWX3ME4.jpg)

elif は上から順に判定される
は上から順に判定されます。
そして、
最初に当てはまったところで終わります。
N = 72 は N &gt;= 40 も満たしますが、そこまでは見ません。
elif
22


# Page. 23

![Page Image](https://bcdn.docswell.com/page/9729QXZRJR.jpg)

条件の順番が重要
もし順番を間違えて、
if N &gt;= 40:
print(&quot;C&quot;)
elif N &gt;= 60:
print(&quot;B&quot;)
と書くと、90点でも C になってしまいます。
23


# Page. 24

![Page Image](https://bcdn.docswell.com/page/DJY4W8R57M.jpg)

鉄則
を並べるときは、
厳しい条件から先に書く
ことが大切です。
点数の例なら、
80点以上
60点以上
40点以上
の順です。
elif
24


# Page. 25

![Page Image](https://bcdn.docswell.com/page/V7NY9QD4E8.jpg)

3-2 論理演算子
複数の条件を組み合わせるときは、
and
or
not
を使います。
Pythonでは &amp;&amp; や || ではなく、英単語で書きます。
25


# Page. 26

![Page Image](https://bcdn.docswell.com/page/YJ9P2DG473.jpg)

and / or / not
演算子
A and B
A or B
not A
意味
成り立つとき
かつ
AとBの両方が True
または AとBの少なくとも一方が True
ではない Aが False
26


# Page. 27

![Page Image](https://bcdn.docswell.com/page/GJ8D53VVJD.jpg)

and の例
if x &gt;= 0 and x &lt;= 100:
print(&quot;In range&quot;)
これは、
0以上 かつ 100以下
という意味です。
両方を満たす必要があります。
27


# Page. 28

![Page Image](https://bcdn.docswell.com/page/LJLMYV5RER.jpg)

or の例
if x == 0 or y == 0:
print(&quot;At least one is zero&quot;)
これは、
xが0 または yが0
という意味です。
どちらか一方でも成り立てばOKです。
28


# Page. 29

![Page Image](https://bcdn.docswell.com/page/47MYNG3P7W.jpg)

連鎖比較
Pythonでは、範囲判定を数学のように書けます。
if 0 &lt;= x &lt;= 100:
print(&quot;In range&quot;)
これは次と同じ意味です。
if 0 &lt;= x and x &lt;= 100:
print(&quot;In range&quot;)
29


# Page. 30

![Page Image](https://bcdn.docswell.com/page/P7R9DZQYE9.jpg)

範囲判定は連鎖比較で書く
範囲判定では、
0 &lt;= x &lt;= 100
のような書き方を優先しましょう。
数式に近いので読みやすく、書き間違いも減ります。
30


# Page. 31

![Page Image](https://bcdn.docswell.com/page/PJXQ19547X.jpg)

range_check.py
# Read an integer
X = int(input())
# Check whether X is within the range
if 0 &lt;= X &lt;= 100:
print(&quot;In range&quot;)
else:
print(&quot;Out of range&quot;)
31


# Page. 32

![Page Image](https://bcdn.docswell.com/page/3JK92P6PJD.jpg)

range_check.py の実行例
入力例：
42
出力例：
In range
42
は0以上100以下なので、範囲内です。
32


# Page. 33

![Page Image](https://bcdn.docswell.com/page/LE3W4X64E5.jpg)

複数条件を混ぜるとき
と or を混ぜるときは、
丸括弧で意図をはっきりさせる
のがおすすめです。
動くコードでも、読みにくいとバグの原因になります。
and
33


# Page. 34

![Page Image](https://bcdn.docswell.com/page/8EDKQ2V57G.jpg)

括弧なしと括弧あり
括弧なし：
if a == 0 or b == 0 and c == 0:
...
括弧あり：
if a == 0 or (b == 0 and c == 0):
...
括弧があるほうが意図が明確です。
34


# Page. 35

![Page Image](https://bcdn.docswell.com/page/V7PKL1VDJ8.jpg)

multi_conditions.py
# Read three integers separated by a space
A, B, C = map(int, input().split())
# Check whether all three are even
if A % 2 == 0 and B % 2 == 0 and C % 2 == 0:
print(&quot;All even&quot;)
# Check whether at least one is even
elif A % 2 == 0 or B % 2 == 0 or C % 2 == 0:
print(&quot;Some even&quot;)
else:
print(&quot;All odd&quot;)
35


# Page. 36

![Page Image](https://bcdn.docswell.com/page/2JVVQYZGJQ.jpg)

multi_conditions.py の実行例
入力例：
2 3 4
出力例：
Some even
全部偶数ではありませんが、偶数が含まれています。
36


# Page. 37

![Page Image](https://bcdn.docswell.com/page/5EGLW9MDJL.jpg)

厳しい条件から先に書く
この例でも、
全部偶数
を先に判定しています。
「全部偶数」は「少なくとも1つ偶数」より厳しい条件です。
先に書かないと正しく分類できません。
37


# Page. 38

![Page Image](https://bcdn.docswell.com/page/4JQY3WRX7P.jpg)

3-3 条件分岐の頻出パターン
AtCoderでは、条件分岐にいくつかの定番があります。
特によく出るのは、
Yes / No 問題
です。
38


# Page. 39

![Page Image](https://bcdn.docswell.com/page/K74W1K82E1.jpg)

Yes / No 問題の定石
if 条件:
print(&quot;Yes&quot;)
else:
print(&quot;No&quot;)
条件を満たすなら Yes 。
満たさないなら No 。
A問題で非常によく出ます。
39


# Page. 40

![Page Image](https://bcdn.docswell.com/page/LJ1YGX2KEG.jpg)

大文字小文字に注意
必ず問題文の指定に合わせます。
Yes / No
YES / NO
yes / no
これらはすべて別物です。
迷ったら、問題文からコピーしましょう。
40


# Page. 41

![Page Image](https://bcdn.docswell.com/page/GJWGKNRP72.jpg)

yes_no.py
# Read two integers separated by a space
A, B = map(int, input().split())
# Print Yes if the sum is even, otherwise No
if (A + B) % 2 == 0:
print(&quot;Yes&quot;)
else:
print(&quot;No&quot;)
41


# Page. 42

![Page Image](https://bcdn.docswell.com/page/4EZLZ3R673.jpg)

yes_no.py の実行例
入力例：
3 5
出力例：
Yes
3 + 5 = 8
で偶数なので、 Yes です。
42


# Page. 43

![Page Image](https://bcdn.docswell.com/page/Y76WZXRL7V.jpg)

場合分けの整理術
条件が増えると、頭の中だけでは整理しにくくなります。
そんなときは、コードを書く前に紙で整理します。
やることは2つです。
1. 漏れなく、重ならないように分ける
2. 厳しい条件から順に並べる
43


# Page. 44

![Page Image](https://bcdn.docswell.com/page/G75MWX8M74.jpg)

漏れなく・重ならない
たとえば数直線なら、
x &lt; 0
0 &lt;= x &lt; 10
10 &lt;= x
のように分けます。
すべての場合を覆い、どの2つも重ならない形にします。
44


# Page. 45

![Page Image](https://bcdn.docswell.com/page/9J29QXKRER.jpg)

厳しい条件から順に
は上から順に判定されます。
そのため、
特別なケースほど上に書く
のが基本です。
順番そのものが、答えを決めます。
elif
45


# Page. 46

![Page Image](https://bcdn.docswell.com/page/DEY4W8N5JM.jpg)

例：うるう年判定
うるう年には、次のルールがあります。
4で割り切れる年は、うるう年
ただし、100で割り切れる年は、うるう年ではない
ただし、400で割り切れる年は、うるう年
46


# Page. 47

![Page Image](https://bcdn.docswell.com/page/VJNY9QX478.jpg)

「ただし」を順番で表現する
厳しい条件から順に並べます。
1. 400で割り切れる
2. 100で割り切れる
3. 4で割り切れる
4. それ以外
この順なら、入れ子にしなくても書けます。
47


# Page. 48

![Page Image](https://bcdn.docswell.com/page/YE9P2D84J3.jpg)

leap_year.py
# Read a year
Y = int(input())
# Check the conditions from the most specific to the most general
if Y % 400 == 0:
print(&quot;Yes&quot;)
elif Y % 100 == 0:
print(&quot;No&quot;)
elif Y % 4 == 0:
print(&quot;Yes&quot;)
else:
print(&quot;No&quot;)
48


# Page. 49

![Page Image](https://bcdn.docswell.com/page/GE8D538VED.jpg)

leap_year.py の実行例
入力例：
2000
出力例：
Yes
2000
は400で割り切れるので、うるう年です。
49


# Page. 50

![Page Image](https://bcdn.docswell.com/page/LELMYVRR7R.jpg)

うるう年の例
：400で割り切れる → Yes
1900 ：100で割り切れる → No
2024 ：4で割り切れる → Yes
上に書いた条件で拾われたものは、下には流れません。
2000
50


# Page. 51

![Page Image](https://bcdn.docswell.com/page/4JMYNGRPJW.jpg)

章末まとめ
/ elif / else で分岐します。
ブロックの範囲は、
インデント
で表します。
インデントは半角スペース4個が標準です。
if
51


# Page. 52

![Page Image](https://bcdn.docswell.com/page/PJR9DZRY79.jpg)

章末まとめ：比較
比較には == を使います。
if x == 5:
print(&quot;Yes&quot;)
は代入です。
比較の結果は True / False になります。
=
52


# Page. 53

![Page Image](https://bcdn.docswell.com/page/PEXQ19R4JX.jpg)

章末まとめ：elif
は上から順に判定されます。
そして、最初に当てはまったところで終わります。
だから、
厳しい条件から先に書く
ことが重要です。
elif
53


# Page. 54

![Page Image](https://bcdn.docswell.com/page/3EK92PRPED.jpg)

章末まとめ：論理演算子
条件の組み合わせには、
and
or
not
を使います。
and と or を混ぜるときは、丸括弧で意図を明確にしましょう。
54


# Page. 55

![Page Image](https://bcdn.docswell.com/page/L73W4X8475.jpg)

章末まとめ：範囲判定
範囲判定は、数式のように書けます。
if 0 &lt;= x &lt;= 100:
print(&quot;In range&quot;)
AtCoderでもよく使います。
55


# Page. 56

![Page Image](https://bcdn.docswell.com/page/87DKQ2M5JG.jpg)

章末まとめ：Yes / No
Yes / No 問題は定番です。
if 条件:
print(&quot;Yes&quot;)
else:
print(&quot;No&quot;)
ただし、大文字小文字は問題文と完全に一致させます。
56


# Page. 57

![Page Image](https://bcdn.docswell.com/page/VJPKL1RDE8.jpg)

練習問題 3-1 符号の判定
整数 N が与えられます。
N が正なら Positive 、 0 なら Zero 、負なら Negative と出力してください。
57


# Page. 58

![Page Image](https://bcdn.docswell.com/page/2EVVQYRGEQ.jpg)

練習問題 3-1：入力と出力
入力：
N
入力例：
-7
出力例：
Negative
3つの場合に分けます。
58


# Page. 59

![Page Image](https://bcdn.docswell.com/page/57GLW96DEL.jpg)

answer_3_1.py
# Read an integer
N = int(input())
# Determine the sign
if N &gt; 0:
print(&quot;Positive&quot;)
elif N == 0:
print(&quot;Zero&quot;)
else:
print(&quot;Negative&quot;)
正でも0でもなければ、必ず負です。
59


# Page. 60

![Page Image](https://bcdn.docswell.com/page/4EQY3W4XJP.jpg)

練習問題 3-2 三角形になるか
3辺の長さ A , B , C が与えられます。
この3辺で三角形を作れるなら Yes 、作れないなら No を出力してください。
60


# Page. 61

![Page Image](https://bcdn.docswell.com/page/KJ4W1KQ271.jpg)

三角形が作れる条件
三角形が作れるのは、
どの1辺も、残り2辺の和より短い
ときです。
つまり、次の3つすべてを満たす必要があります。
A + B &gt; C
B + C &gt; A
C + A &gt; B
61


# Page. 62

![Page Image](https://bcdn.docswell.com/page/LE1YGXPK7G.jpg)

練習問題 3-2：入力と出力
入力：
A B C
入力例：
3 4 5
出力例：
Yes
3つの条件を and でつなぎます。
62


# Page. 63

![Page Image](https://bcdn.docswell.com/page/GEWGKN2PJ2.jpg)

answer_3_2.py
# Read three side lengths
A, B, C = map(int, input().split())
# All three inequalities must hold
if A + B &gt; C and B + C &gt; A and C + A &gt; B:
print(&quot;Yes&quot;)
else:
print(&quot;No&quot;)
&gt;=
ではなく &gt; です。
63


# Page. 64

![Page Image](https://bcdn.docswell.com/page/47ZLZ3D6J3.jpg)

練習問題 3-3 映画館の料金
映画館の料金は、次のルールで決まります。
水曜日なら、年齢にかかわらず1000円
水曜日以外で15歳以下なら800円
水曜日以外で60歳以上なら1200円
それ以外なら1800円
64


# Page. 65

![Page Image](https://bcdn.docswell.com/page/YJ6WZX1LJV.jpg)

練習問題 3-3：入力と出力
入力：
A W
は年齢です。
W は水曜日なら 1 、それ以外なら 0 です。
入力例：
A
70 1
出力例：
1000
65


# Page. 66

![Page Image](https://bcdn.docswell.com/page/GJ5MWX4MJ4.jpg)

条件の優先順位
この問題では、
水曜日かどうか
が最も強い条件です。
70歳でも、水曜日なら1000円です。
年齢の判定を先に書くと、答えが変わってしまいます。
66


# Page. 67

![Page Image](https://bcdn.docswell.com/page/LE3W4XG9E5.jpg)

answer_3_3.py
# Read the age and the weekday flag
A, W = map(int, input().split())
# Wednesday has the highest priority
if W == 1:
print(1000)
elif A &lt;= 15:
print(800)
elif A &gt;= 60:
print(1200)
else:
print(1800)
条件の順番がそのまま答えを決めます。
67


# Page. 68

![Page Image](https://bcdn.docswell.com/page/8EDKQ2187G.jpg)

次回予告
次の第4講では、
ループ
を扱います。
同じ処理を何度も繰り返せるようになると、B問題の世界に入っていきます。
68


