← クエスト一覧

クエスト70:FizzBuzz

スライド 1 / 5
コーデ
💻 コード例
実行結果
← クエスト一覧
🐍 Python / Quest 70 / 85

クエスト70:FizzBuzz

応用 +10 XP
🏠
今回の課題
「割る数」と「言葉」の組を受け取り、当てはまる言葉をつなげて返す関数 fizzbuzz(n, rules) を作ろう。1〜15 で使って表示してみよう。
📖 解説を見る
🏆 FizzBuzz、もう一段うまく書く

Q25 では if を並べて FizzBuzz を作りました。今回は同じ出力を、もっと賢い作りで組み立てます。

✏️ 課題:
rules = [(3, 'Fizz'), (5, 'Buzz')] のように「割る数と言葉」の組を受け取り、
・当てはまる言葉を順につなげて返す
・1つも当てはまらなければ数字を文字列で返す

🎯 ここがポイント:

Q25 では 15 の倍数を特別扱いして n % 15 == 0 を先頭に書きましたね。
でも 15 は 3 でも 5 でも割り切れます。言葉をつなげる作りにすると Fizz + Buzz で自然に FizzBuzz になり、15 の判定そのものが要らなくなります
出力は Q25 とまったく同じなのに、特別扱いが消えるのが面白いところです。

💡 どこで使う?

「条件と結果の組を表(データ)にして、処理は共通にする」という形は実務で頻出です。
税率や割引の条件、バリデーションのルール、キーワードの振り分けなど、ルールが増えても if を増やさずリストに1行足すだけで済むようになります。

⚠️ 注意:
7 → Bazz を足したくなったら rules に1組足すだけで動くか、確かめてみよう。
ヒントを見る
空の文字列から始めて、rules を for で回そう。割り切れたら言葉をつなげていき、最後まで何もつながらなかったら数字を文字列にして返す。
期待する出力
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
📄 見本
「答えを見る」を押すと、お手本のコードが出ます。クリックでコピーできます。
💻 コードエディタ
実行すると結果がここに表示されます
正解!見本と同じになりました。
次へ →
🏠 ホームへ

れんしゅうもんだい

☑ 0 / 3 正解 レッスンに戻る

全問正解でクエストクリア!

未挑戦

問題 1: 1〜5 の FizzBuzz を表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
1 2 Fizz 4 Buzz
未挑戦

問題 2: 1〜20 の FizzBuzz をリスト内包表記で作って表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz
未挑戦

問題 3: 1〜30 で「Fizz」と表示された回数を数えて表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
8
コピーしました!