codewars 8kyuのExpression matterを解いた時に重要だったmax関数について解説していきたいと思います。
この問題は、expressionsMatterという関数を作り、
a,b,cにどの数字が入ってもその数値が最大になるような式を考えないといけない問題です。
例えば、a、b、c全てに1が代入されたとします。
この場合a+b+cだと3、abcだと1ですよね?
そのため、足し算の式がアウトプットされるようにします。
しかし、a,b,cに10が入ると、掛け算の方が数値が大きくなりますよね。
数値によって最大値が変わってしまいます。
では、どのようなcodeを書けば最大値だけを求められるのでしょうか?
##max関数
def expressionsMatter(a,b,c)
return max(a+b+c,a*b*c,a*(b+c),(a+b)*c)
このようにcodeを書けば、どの数値がa,b,cに入っても最大値が求められます。
ここで重要なのが、max関数でカッコの中に全ての式のパターンを書くことです。
ここで注意なのが、returnを何回も使わないということです。
returnは関数内の処理を終了させる性質を持っているので、1番最初のreturn文しか機能しません.
そのため、いくつもカッコ内の式があるからといって、
return(a+b+c)
return(a*b*c)
...
といくつもreturn文を書かないようにしましょう。
以上になります。