第74回【Python】けた数の測定、足したり引いたり

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

はじめに

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

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

座り仕事で足のむくみがひどくなってきたので、試しに、足を少しだけ高くして寝てみました。翌朝、足が軽くて軽くて驚きです。とりあえずは家にあるものでやっていますが、足用の枕を買う日も近い気がしています。

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

けた数の測定

整数Nが与えられます。Nのけた数を出力してください。


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

・ N は 0 以上 1,000 未満の整数


100

最初に思いついたのは、文字列型でとって len 関数を使う方法。しかし「条件分岐メニュー」なので、if 文を利用して書く必要があるかも、が別解。

Python
N = input()
print(len(N))
Python(別解)
N = int(input())
if N < 10:
    print(1)
elif N < 100:
    print(2)
else:
    print(3)
VBA
N = Cells(1, 1)
Debug.Print Len(N)
VBA(別解)
N = Cells(1, 1)
If N < 10 Then
    Debug.Print 1
ElseIf N < 100 Then
    Debug.Print 2
Else
    Debug.Print 3
End If

足したり引いたり

整数N, A, B ( – 99 ≦ N, A, B ≦ 100 ) があります。以下の 2 つの操作をそれぞれ 1 回ずつおこなったとき、Nを 0 にできる場合はYESを、できない場合はNOを出力してください。
1. NにAを足す、またはNからAを引く
2. NにBを足す、またはNからBを引く

N A B

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

・ N, A, B は – 99 以上 100 以下の整数


-10 8 2

これは、単純に、起こり得る全パターンで検査してみれば良いだけ?

Python
N,A,B = map(int,input().split())
if N + A + B == 0:
    print("YES")
elif N + A - B == 0:
    print("YES")
elif N - A + B == 0:
    print("YES")
elif N - A - B == 0:
    print("YES")
else:
    print("NO")
VBA
NAB = Split(Cells(1, 1), " ")
N = Val(NAB(0))
A = Val(NAB(1))
B = Val(NAB(2))
If N + A + B = 0 Then
    Debug.Print "YES"
ElseIf N + A - B = 0 Then
    Debug.Print "YES"
ElseIf N - A + B = 0 Then
    Debug.Print "YES"
ElseIf N - A - B = 0 Then
    Debug.Print "YES"
Else
    Debug.Print "NO"
End If

最後に

もっとスマートな方法があるかもしれないけれど、模範解答もこれだったし、これで良いのだろうか。

if 文を並べたときの最後、else で終わらせてしまうか、きちんと条件付けしておくべきか。else で終わらせてしまうと、条件が増えたときに書き直す範囲が増える可能性がある。条件付けしておくと、条件に当てはまらないデータがきたときにエラーが発生する可能性がある。拡張性を考えて、どちらが良いのか。・・・ちゃんと条件付けしたうえで、else で締めるのがいいんだろうけれど。

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

Pythonpaiza,学習,Python

Posted by LeoSaki