第71回【Python】AND+NOT、AND+OR

現在取り組んでいるのは、paiza ラーニング問題集「条件分岐メニュー」になります。

はじめに

猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。

Python をゼロから勉強してみよう、のコーナー 71 回目です。

部署の責任者として、お客様と打ち合わせすることがありますが、本当は得意ではありません。超人見知りなうえにコミュ障なので、数日前から何度も準備練習をしてから臨まないと不安です。急に打ち合わせが入ったときには胃が痛くて痛くて堪りません。

それでは、今日も頑張ってみようと思います。

AND+NOT

2 つの整数A、Bが与えられます。以下の条件を満たす場合はYESを、そうではない場合はNOを出力してください。
・「Aが 10 以上」 かつ 「Bが 10 以上ではない」


すべてのテストケースにおいて、以下の条件をみたします。

・ A, B は 1 以上 20 以下の整数


12 3

少し複雑な条件。よくあるパターンなので、しっかり身に付けておきたい。ただし、B が 10 未満である、と言い換えることができるということも頭に入れておいたほうが良いかもしれない。

Python
A,B = map(int,input().split())
if A >= 10 and not B >= 10:
    print("YES")
else:
    print("NO")
VBA
AB = Split(Cells(1, 1), " ")
A = Val(AB(0))
B = Val(AB(1))
If A >= 10 And Not B >= 10 Then
    Debug.Print "YES"
Else
    Debug.Print "NO"
End If

AND+OR

3 つの整数X, Y, Zが与えられます。「Xが 10 以上」かつ「Yが 10 以上」の場合はYESを、そうではない場合はNOを出力してください。
ただし、「Zが 10 以上の」場合はXとYの値にかかわらず、必ずYESを出力してください。


すべてのテストケースにおいて、以下の条件をみたします。

・ X, Y, Z は 1 以上 20 以下の整数


15 12 0

こちらも、よくあるパターンなので、しっかり身に付けておきたい。ただし、条件を「Zが 10 以上」の場合と「Xが 10 以上」かつ「Yが 10 以上」の場合の 2 パターンに分けることで可読性が良くなる可能性もある。

Python
X,Y,Z = map(int,input().split())
if X >= 10 and Y >= 10 or Z >= 10:
    print("YES")
else:
    print("NO")
VBA
XYZ = Split(Cells(1, 1), " ")
X = Val(XYZ(0))
Y = Val(XYZ(1))
Z = Val(XYZ(2))
If X >= 10 And Y >= 10 Or Z >= 10 Then
    Debug.Print "YES"
Else
    Debug.Print "NO"
End If

最後に

複雑な条件の場合、可読性を考慮して、幾つかに分けることもありかなと考えている。結果として、同じ文言を表示する場合であっても(例えば、print(“YES"))、読みやすさ優先を、LeoSaki(旦那)は選択する。もちろん、同じ文言を表示するための関数であったりそれこそクラスであったり、別途用意する方が良いと考えている。

今回は、問われている内容に合わせて書いたので、条件式を一文で用意したけれど、後で読み返したときにすぐに理解できるかなぁ、というのは書いた本人でも自信がない。(今回くらいの条件式はぱっと見で理解できますよ? さすがに・・・)

引き続き、よろしくお願いいたします!

Python学習,Python,paiza

Posted by LeoSaki