マッドリブ
Cass よし、こんにちは!次の2週間、私はクルーのエンターテイメント担当なんだけど、まったく何も用意できていないんだ。マッドリブみたいなものを作ってくれない?みんなにいくつかの単語を聞いて、それを物語に当てはめて、カオスな結果を表示するやつ。賢くなくていいんだ。むしろ賢くない方がいい 😄
作るもの
名詞を入力してください: ピザ
動詞を入力してください: 爆発した
形容詞を入力してください: キラキラした
場所を入力してください: 図書館
キラキラしたピザが図書館で爆発した。誰も予想していなかった。必要なもの
- 出力と入力 — プレイヤーから各単語を集める
- 文字列 — f-string を使って単語を物語のテンプレートに差し込む
- リスト — 集めた単語を使う前に保存しておく方法の一つ
- 関数 — 任意ですが、「単語を尋ねる」処理を関数にまとめると、コードがすっきりします
ヒント
まず集めてから、出力する。 物語を組み立てる前に、すべての単語を集めましょう。input() の呼び出しと物語の出力を混ぜると、すぐに混乱します。
f-string が自然な選択肢です。 すべての単語が揃ったら、変数を差し込んだ単一の f-string だけで出力行を組み立てることができます。
変数かリストか。 各単語をそれぞれの変数(noun = ...、verb = ...)に格納してもよいし、すべてをリストにまとめてもかまいません。どちらでも動きますが、物語の行を書くときにどちらが読みやすいかを考えてみましょう。
さらに進めるには
基本バージョンが動いたら:
- 複数のテンプレート。 2つか3つの異なる物語テンプレートを書いて、
randomモジュールを使ってランダムに1つ選びましょう。 - より多くの単語の種類。 複数形の名詞、過去形の動詞、数字、色などを追加しましょう。空欄が増えるほど、結果はおかしくなります。
- プレイヤーに選ばせる。 利用可能な物語テンプレートを名前で表示し、単語を集める前にプレイヤーに選ばせましょう。

