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

コメント

このブログの人気の投稿

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

failed: unable to get local issuer certificate (_ssl.c:1123)と出たので解決した話

自作のChrome Extensionをインポートした時に "Invalid value for 'content_scripts[0].matches[0]': Empty path."というエラーが出たので解決した