CodeWarsの話。CreatePhoneNumber編
たまたま目にしたので
CodeWarsなるサイトがあるとのことで試しに登録してみた。
サイトで問題を解いてコーディングスキル上げてね!みたいなサイトです。
Create Phone Number
そこで2問目(3問目だったかも)で出てきたCreate Phone NumberについてPythonで解いていました。
この問題はリストで10桁の数字が与えられるので、それらの値を電話番号のフォーマット、下のような形式で変換して返してほしいという問題です。
create_phone_number([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]) # => returns "(123) 456-7890"
僕は愚直にfor文の中で分岐を何度も挟むことで作る、という方法を取りました。
def create_phone_number(n):
phone_number = '('
for i, num in enumerate(n):
if i < 3:
phone_number += str(num)
if i == 2:
phone_number += ') '
elif i <= 13:
phone_number += str(num)
if i == 5:
phone_number += '-'
return phone_number
でもよく見たらこれって書く量も多いし、なんかあんまりいけてないなぁと思っていたところ他の方の回答を見たところ、こんな解答を見つけました。
def create_phone_number(n):
return "({}{}{}) {}{}{}-{}{}{}{}".format(*n)
こちらの方が楽に書ける上、Pythonを少しでも書いたことがある人なら分かりやすい(書いたことなくても直感的に分かるかもしれない)ので、今後こんな感じの処理をPythonで書くときは後者を選ぼうと思った、という話です。
普段PythonではなくJavaを書いているのでちょっと書かないとすぐに忘れてしまう現実が悲しい・・・
コメント
コメントを投稿