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を書いているのでちょっと書かないとすぐに忘れてしまう現実が悲しい・・・

コメント

  1. Thankyou for sharing the information. Website is so easy to use – I am impressed with it.
    machine learning certification

    返信削除

コメントを投稿

このブログの人気の投稿

Braveブラウザの同期機能をiPhoneで設定した話。

LGの43インチモニター、43UN700-BとエルゴトロンのモニターアームHXを買った話。

Brave×電通のレポートから読み解くBraveブラウザの将来性