毎朝Codewars@2019.06.18(火): Holiday VII - Local Talk
毎朝ちびちびCodewars。
Holiday VII - Local Talk [7級] www.codewars.com
今日のお題:
""" 与えられた文章の単語間に "pak" という言葉を挟んで返す一種の「はさみ言葉」遊び。 例えば pak("Man I need a taxi up to Ubud")) ならこうなる => "Man pak I pak need pak a pak taxi pak up pak to pak Ubud" ただし、 - 文頭と文末には Pak をつけないこと - 空白だけの文字列の時は ''(an empty string)を返すこと def pak(s): Args: s (str): なんらか文章 Returns: "pak"を追加した文章 """
コード
さすが7級、瞬殺 ^^;;
def pak(s): return ' pak '.join(s.split())
- splitのセパレータにあえて
' '
を与えないのがポイント。
文法、関数・メソッドnote
str.split(sep=None, maxsplit=-1)
組み込み型 — Python 3.7.3 ドキュメント > 文字列メソッド
- セパレータなしあるいはNoneの時は、空白文字で分割される。
でも s.split() と s.split(' ') は振る舞いが違う。
# sの先頭と末尾には空白1個ずつ。 # AとBの間には空白2個、BとCの間には空白1個挟まっている。 s = ' AAAAAA BBBBB CCCCC DDDDD ' s.split() # 結果 ['AAAAAA', 'BBBBB', 'CCCCC', 'DDDDD'] # セパレータ無指定なら、sの先頭/末尾の空白は無視されるし、連続した空白はデリミタ一つ分の扱いになる。 s.split(' ') # 結果 ['', 'AAAAAA', '', 'BBBBB', 'CCCCC', 'DDDDD', ''] # 明示的に空白1個をセパレータに指定すると、先頭/末尾の空白もカウントされる。<br> # また空白2個のところは空の文字列を区切ったような扱いになる
- セパレータには複数文字列も使える。
s = ' AAAAAAxyzBBBBBz y zCCCCCxDDDDD ' s.split('xyz') # 結果 [' AAAAAA', 'BBBBBz y zCCCCCxDDDDD '] # 文字列'xyz'で分割する。各文字の or じゃないよ(注意)。