Step1:リストにためる(リスト)
例題(コード)

実行例:[‘わたし’,’は’,’ねこ’]
練習
- “です” を追加して、out を表示
Step2:リストを文にする(join)
例題

実行例:わたし は ねこ です
練習
- 区切りを ” / ” に変えてみる(例:” / “.join(out))
✅チェック:joinで「文」表示できた
Step3:forで「何回も」やる(反復)
例題

練習
- range(5) を range(10) に変える
✅チェック:forの回数を変更できた
Step4:ifで数える(分岐)
例題

練習
- 出た値も表示する
- 「1が出た回数」も数える(count1 を作る)
✅チェック:ifで条件を変えられた
Step5:生成っぽい=単語をためて表示

Step6:辞書の最小例(状態遷移の練習)
例題(信号機)

練習
- s=”赤” で開始して違いを確認
✅チェック:dict[key] で取り出せた
Step7:タプル分解の最小例(生成AIの前に練習)
例題

練習
- pair の中身を好きな単語に変える
✅チェック:分解代入で2つに分けられた
Step8:辞書入力(next_word)

next_word = {“<S>”: ([“わたし”,”あなた”], [3,1]), “わたし”: ([“は”], [1]), “あなた”: ([“は”], [1]), “は”: ([“ねこ”,”いぬ”], [2,1]), “ねこ”: ([“です”], [1]), “いぬ”: ([“です”], [1]), “です”: ([“</S>”], [1]),}
確認(分解代入テスト)
✅チェック:[‘わたし’,’あなた’] と [3,1] が表示される
Step9:while+break(終端まで続ける練習)
例題(カウントダウン)

練習
- 10から始める/if n == 3 で止めるなど変更
✅チェック:while+break が使えた
Step10:遷移表から「次を選ぶ」だけ(まだ全文生成しない)
例題

練習
- <S> の候補に “ぼく” を追加して、出るか確認
Step11:関数の最小例(部品化の練習)
例題

練習
- mul(a,b) を作って掛け算にする
✅チェック:def/return を使えた
Step12:
生成を関数化(max_words安全装置つき)
例題(完成形の土台)

練習
- max_words=5 にして短くなるか確認
✅チェック:10回生成できた
Step13:
ハルシネーション体験(矛盾を入れる)
例題

練習(記述)
- “変”な出力を1つ書き、原因を1行:
- 模範:「確率でつなぐだけで意味・整合性の確認をしていないため」
Step14:
簡易フィルタ(continue)で抑制
例題(ねこ→げんきを禁止)

練習
- 自分の禁止条件を1つ作って if を書き換える
例:あなた→いぬ、など
✅チェック:continueで「追加しない」制御ができた
提出(最終)
- 変更した next_word(どこをどう変えたか)
- 生成例5つ
- ハルシネーション例1つ+原因
- 自分のフィルタ条件(if文)1つ
Copyright (C) 2022 Easy Programming
