第11回【Python】N が M ずつ増えたときにいつ K を越える?、毎日増加するお金
現在取り組んでいるのは、paiza ラーニング問題集「ループメニュー 2」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
Python をゼロから勉強してみよう、のコーナー 11 回目です。
野球が無い季節は野球のことを思いながら過ごしています。シーズン終わった直後からキャンプインを楽しみにしている LeoSaki(旦那)です。
それでは、今日も頑張ってみようと思います。
N が M ずつ増えたときにいつ K を越える?
整数 N, M, K が与えられます。
N が M ずつ増えるとき、何回目に K を越えるか出力してください。
Python の標準入力からの値の受け取り方が素敵だ。受け取りと分割を 1 行で書けるのが。
Python
N,M,K = map(int,input().split())
ans = 0
while N <= K:
N += M
ans += 1
print(ans)
シンプルですよね。
この問題ではないのだけれど似たような状況で、とある知り合いに、N が K より大きくなるまでって書かれてるのだから、N が K より大きくない間ってことで、while not N > K じゃダメなんすかね? って言われたことがある。確かにその通り、と思って調べてみたら、while not 構文っていうのもあるようだ。
Python
N,M,K = map(int,input().split())
ans = 0
while not N > K:
N += M
ans += 1
print(ans)
なんか、こっちの方が日本語的にわかりやすいかもしれない。
さて、VBA でも書いてみる。
VBA
A = Split(Cells(1, 1), " ")
N = Val(A(0))
M = Val(A(1))
K = Val(A(2))
ans = 0
Do While N <= K
N = N + M
ans = ans + 1
Loop
Debug.Print ans
やはり、Python のようにスマートに書くことはできないけれど、コード自体は似たようなものになる。
毎日増加するお金
現在所持金を A 円持っています。
所持金が毎日 10% ずつ増えるとき、何日後に B 円を超えるか出力してください。
また、増加するお金は小数点以下切り捨てで考えることとします。
例として、所持金が 831 円
のとき、10% は 83.1円
ですが、増加するお金は 83 円
です。
マジですか。LeoSaki(旦那)の所持金も 10 % ずつ増やしてもらえませんか? とにかくコードを書いて、今の所持金が希望額に到達するまでの日数を調べてみたい。
Python
A,B = map(int,input().split())
ans = 0
while not A > B:
A = int(A * 1.1)
ans += 1
print(ans)
一度覚えたことは、積極的に使ってみよう。while not 構文。使って自分のものにしていって、その中で問題が発生したら、再度調べ直す。
paiza の解答例で while not 構文を見ないということは、もしかしたら致命的な問題が隠れているのかもしれない。でも、経験するまでは気づくことができないもの。
現状、ここまでは問題は発生していないので、積極的に使ってみる所存です。
さて、毎日増加するお金は、スタートが小さいとなかなか増える実感がないのだけれど、時間経過と共に、とてもお金が増えていくことがわかった。VBA でも書いておいて、エクセルという身近なツールで机上の計算を楽しんでみよう。
VBA
S = Split(Cells(1, 1), " ")
A = Int(S(0))
B = Int(S(1))
ans = 0
Do While Not A > B
A = Int(A * 1.1)
ans = ans + 1
Loop
Debug.Print ans
最後に
普段、VBA を利用するときには、option explicit を必須としている。なんでも入ってしまう入れ物って気持ち悪くないですか? それが、Python を敬遠していた理由の一つでもあった。
「型が一致しません」で怒られるパターン。
VBA
Dim S As String, L As Long
S = "test"
L = S
Debug.Print L
同じことを Python でやってみる。普通に成功するパターン。
Python
S = "test"
L = 813813
L = S
print(L)
最近は、しっかりと Python に向き合って学習しているため、あまり気にならなくなった。もちろん、型を意識しなくなくなった、という意味でなく。型は大事。
辻内くんは残念だった。一軍でその投球を見てみたかった。肩は大事。
引き続き、お付き合いよろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません