各桁の和の求め方いろいろ
2つ数字が与えられて、各桁の和が大きい方の和を出力する問題です。
自分のやり方があまりにいけてなくて、他の方の解答を見て、目から鱗が落ちました。
基本方針として100の位と10の位と1の位の数字をそれぞれ求めて合計を出すことを考えます。
例えば、235という数字があったとします。
私の場合100の位の数字は、100で割った商で求めます。
235 // 100 -> 2
ここからがいけてなくて。。。
その後に、元の数字235から200を引きます。235 - 200 = 35
35を10で割った商から10の位を求めて、また35から30を引いて。。。
途中で書きたくなくなるくらいお粗末なやり方だなと思いました。
もっと美しい方法1
各桁を求めて最後に足す方針は同じです。
100の位は100で割った商で求めます。(ここまでは同じ)
10の位は10で割った商から10で割ったあまりを計算して求めます。
235だったら、235 // 10 -> 23
そこから10で割ったあまりは 23 % 10 -> 2
(235 // 10) % 10 # 2
1の位は10で割ったあまりで求めます。
もっと美しい方法2
入力が文字列なので、各文字を整数に変換してそのまま足します。
sum(map(int, '235')) # 10
最後のやり方は、シンプルで、「あぁそうだよなー」と思いました。
あまり自分のダメさ加減を卑下しても仕方がないので、
こういう細かいことを積み重ねつつ、1つ賢くなったと前向きに考えていこうと思います。