Estudiantes(学生の成績管理)
概要
このリポジトリ「Estudiantes」は、学生の成績(ノータ)を扱う小さなスクリプトを格納したものです。README に関数 notas_estudiantes() の実装断片があり、標準入力から「学生数」と「氏名と点数を交互に並べたデータ」を受け取って、名前と点数をそれぞれ抽出し、点数が3.0以上の学生を合格として振り分ける処理が記述されています。現状はファイルが1つ、コミット数も少ない最小構成であり、入出力やエラーチェックの堅牢性は限定的です。
リポジトリの統計情報
- スター数: 1
- フォーク数: 0
- ウォッチャー数: 1
- コミット数: 2
- ファイル数: 1
- メインの言語: 未指定
主な特徴
- 学生数と氏名・点数のデータを標準入力から受け取り処理する簡易スクリプト
- 氏名と点数が交互に並ぶ文字列を分割して名前リストと点数リストを作成
- 点数を float に変換し、閾値(>= 3.0)で合否判定を実施
- README にコードが直接記載されている最小構成リポジトリ
技術的なポイント
README にある実装は Python で書かれた関数 notas_estudiantes() の断片で、基本的な処理の流れは次の通りです。まず標準入力で学生数 n を読み取り、続けて氏名と点数がスペース区切りで並ぶ単一行入力を受け取ります(例: “Alice 3.5 Bob 2.8”)。その文字列を split() して tokens を得て、偶数インデックスを名前、奇数インデックスを点数としてそれぞれのリストに振り分けます。点数は float に変換され、for ループで閾値(スクリプト内では 3)以上なら承認(estudiantes_aprobados に追加)する動作が見えます。
この実装から注目すべき点は以下です。まず「名前と点数が完全に交互に並ぶ」という前提に強く依存しており、入力が不正(件数ミスマッチ、空白の数、名前にスペースが含まれる等)だと IndexError や ValueError を生じやすい点。点数の小数表記やロケール(カンマ vs ドット)にも脆弱です。可読性向上のためには zip を使ったパターン(tokens[0::2], tokens[1::2] を組で処理)や、入力検証、try/except による例外処理、関数の戻り値化(合格者リストを返す)を検討すると良いでしょう。また、実運用なら CSV や JSON など構造化データの利用、コマンドライン引数やファイル入出力の追加、ユニットテストの導入が推奨されます。さらに多国語対応や閾値の設定、成績統計(平均、中央値、合格率)といった機能拡張も有用です。
プロジェクトの構成
主要なファイルとディレクトリ:
- README.md: file
README に含まれるコード抜粋(要旨)
- def notas_estudiantes(): で始まる関数
- n = int(input(…)) で学生数を読み取る
- datos = input(…) を split して名前と点数を交互に抽出
- float に変換した点数を基に合否判定(>= 3)
サンプル入力イメージ:
- 入力1行目: 2
- 入力2行目: “Alice 3.5 Bob 2.8” 期待される処理: [“Alice”] が合格者リストに入る
改善案と実装上の注意点
- 入力検証: tokens の長さが 2*n と一致するかチェックし、不一致ならユーザーへ明示的なエラーメッセージを出す。
- 例外処理: int() や float() の変換失敗をキャッチして再入力を促す。
- 名前にスペースが入るケース: フォーマットを “名前,点数”(カンマ区切り)にするか CSV を使う。
- 設定可能な閾値: 合格点を関数引数やコマンドラインオプション化する。
- 出力の構造化: 合格者リストを返す・JSONで出力する・ファイルへ保存する。
- テスト: pytest を用いた境界値テスト(n=0、負の数、不正フォーマット)を追加する。
まとめ
最小限の入力処理と合否判定を示す教育的なスクリプト。拡張余地が大きいリポジトリです。(約50字)
リポジトリ情報:
- 名前: Estudiantes
- 説明: Codigo notas estudiantes
- スター数: 1
- 言語: null
- URL: https://github.com/lauramendez1518-commits/Estudiantes
- オーナー: lauramendez1518-commits
- アバター: https://avatars.githubusercontent.com/u/258057658?v=4