Python入門

【Python入門】単語の順番を逆にする関数を作ってみよう!reverse_words()チャレンジ

「文字列の操作って、なんとなくわかるけど、応用問題になると急に手が止まる…」そんな経験、ありませんか?😅

今回は、英語圏のエンジニアコミュニティ dev.to で話題の「Code Challenge of the Day」から、単語の順番を逆にする関数 reverse_words() を一緒に解いていきましょう!

難易度は Easy(初級) です。Pythonの基本的な文字列メソッドを使いこなす絶好の練習になりますよ 🐍

📝 問題のおさらい

python code
python code / Photo by Nemuel Sereti via Pexels

問題はシンプルです。

  • スペース区切りの単語が入った文字列 s を受け取る
  • 単語の順番を逆にして返す
  • 余分なスペースは削除(collapse)する

たとえばこんな感じです。

reverse_words("Hello World")      # → "World Hello"
reverse_words("  Python  is  fun  ")  # → "fun is Python"

余分なスペースを無視するのがポイントですね。

🔑 解法のポイントを整理しよう

イメージとしては、こんな3ステップです。

  1. split() で単語に分割する(余分なスペースも自動で無視してくれる!)
  2. [::-1] またはreversed()でリストを逆順にする
  3. join() で空白つなぎに戻す

Pythonの split() は、引数なしで呼ぶと連続するスペースを自動的にまとめてくれます。これ、知っておくと一気に解決できるポイントですよ 💡

✅ 解答コード

実際に書いてみましょう!

def reverse_words(s):
    # split()は引数なしで余分なスペースをまとめて分割してくれる
    words = s.split()

    # リストを逆順にしてjoinでつなぐ
    return " ".join(words[::-1])


# --- 動作確認 ---
print(reverse_words("Hello World"))          # → "World Hello"
print(reverse_words("  Python  is  fun  "))  # → "fun is Python"
print(reverse_words("one"))                  # → "one"
print(reverse_words(""))                     # → ""

ポイントをまとめるとこんな感じです👇

  • split()(引数なし)→ 余分なスペースを気にせず単語リストに変換
  • [::-1] → リストを逆順にするPythonらしいスライス記法
  • " ".join(...) → 単語リストをスペース区切りの文字列に戻す

これ、実行せずに空文字列 "" を渡したときの動作を正確に答えられますか?🤔 split() は空文字に対して空リスト [] を返し、join も空文字列を返すので安全に動きます。

💡 別解:reversed()を使うパターン


def reverse_words(s):
    # reversed()を使うパターン(どちらでもOK)
    return " ".join(reversed(s.split()))

どちらも1行で書けるのがPythonの気持ちいいところですよね 😊

まとめ

今回は split() + [::-1] + join() という組み合わせで、単語の順番を逆にする関数をスッキリ実装できました。

文字列操作はPythonの基本中の基本。こういった小さなチャレンジをコツコツ積み重ねると、着実に力がつきますよ 💪 ぜひ手元で動かして試してみてください!

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

もしも

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

FastAPIでWebAPI開発を実践的に学ぶ

Amazonで見る

ESP32&Arduino 電子工作 プログラミング入門

もしも

ESP32&Arduino 電子工作 プログラミング入門

ESP32とArduinoで電子工作を学ぶ入門書

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です