順番に読み進めながら学べます

Python 基礎の総まとめ問題 — 学んだことをコードで確認

Python基礎の総まとめ3問です。"1995-08-21" をsplitとint()で和暦に整形、集合演算で提出状況を分析、代入とcopy()で参照の挙動を比較する演習に取り組みます。

問題 1: 日付文字列を分解して整形する

誕生日の文字列birthdayから、人間が読みやすい和暦表記を作ります。文字列を split で分解し、int()で数値に変換し、f-string で組み立てましょう。

解説:文字列を分解して数値に変換する流れ
"1995-08-21"元の文字列["1995", "08", "21"]split("-") の結果1995 / 8 / 21int() で数値化"1995年8月21日"f-string で組み立てsplitintf-string
split で 3 要素のリストに分け、int で数値化することで前ゼロが落ちる。最後に f-string で組み立てる。

誕生日を表す文字列birthday = "1995-08-21"から、和暦表記の1995年8月21日という形式の文字列を作って出力してください。

月と日に前ゼロ(08月08日のような0)が付かないように注意してください。

Python エディタ

コードを実行してください

問題 2: 集合演算で提出状況を分析する

課題 A・B のどちらに誰が提出したかを比較します。set の集合演算を使うと、両方提出した人どちらか片方だけ提出した人を一発で求められます。

解説:set_a と set_b から & と ^ の結果を求める
set_a{Alice, Bob, Carol, Dave}set_b{Bob, Carol, Eve}{Bob, Carol}{Alice, Dave, Eve}set_a & set_bset_a ^ set_b
両方のセットを入力にして、矢印のラベルが計算する演算、矢印の先がその結果を表す。

課題 A の提出者はsubmitted_a = ["Alice", "Bob", "Carol", "Dave"]、課題 B の提出者はsubmitted_b = ["Bob", "Carol", "Eve"]です。

この 2 つのリストから、両方の課題を提出した人どちらか一方しか提出していない人をそれぞれ求め、辞書順に並べてリストとして出力してください。

Python エディタ

コードを実行してください

問題 3: ミュータビリティの仕組みを確認する

リストを別の変数に代入したつもりが、実は同じオブジェクトを共有している — Python のミュータブルで起きやすい挙動です。copy()を使う場合と使わない場合で、後から元のリストを変更したときに何が起きるかを実際に確かめます。

解説:代入は参照を共有、copy() は新しいオブジェクトを作る
group_a = students(代入)group_b = students.copy()(コピー)同じリストを参照students → [A, B]group_a → [A, B]別リストを参照group_b → [A, B]append("Carol") 後students → [A, B, Carol]group_a → [A, B, Carol]append の影響なしgroup_b → [A, B] のまま共有独立
代入は同じリストに別名を付けるだけ。あとで元を変更すると両方の名前で見えるcopy()は別物のリストを作るので影響を受けない。

代入とcopy()の違いを観察する課題です。学生名 2 人が入ったリストstudentsを用意し、同じリストを別の変数に代入したものgroup_a)と、コピーで別リストとして作ったものgroup_b)の 2 種類を準備してください。

そのあと、元のリストstudentsに学生を 1 人追加し、students / group_a / group_bの中身を順に出力して、追加が反映されているかどうかを比較してください。

Python エディタ

コードを実行してください

ここまでお疲れ様でした

Python 基礎の章はこれで完了です。変数とデータ型、文字列・リスト・辞書・集合の使い分け、ミュータビリティを意識した代入と copy()まで、データを扱うときに必要な道具が一通り揃いました。値を組み立てて画面に出すレベルから、複数の型を組み合わせてデータを変換する課題まで、ご自分で書いて動かせるようになりました。

次の章「Python 文法」では、if / for / whileなどの制御構文、def / lambdaによる関数定義、リスト内包表記、デコレータやジェネレータ、try / exceptによる例外処理まで、処理の流れを自分で組み立てる文法を学びます。