要件定義の例題と練習問題
# BMI計算プログラム
体重と身長からBMIを計算する
## 1. 入力
- 体重(kg単位)と身長(cm単位)をキーボードから入力する(小数可)
- キーボード入力では入力プロンプトを表示する
- 入力例
- 体重(kg単位)> 70.5
- 身長(cm単位)> 175.2
## 2. 処理
- BMIを計算する
- 計算式: BMI = 体重(kg) / (身長(m) * 身長(m))
- 計算結果は、小数点以下1桁までに丸める
- 計算例:70.5kg、175.2cm → BMI = 23.0
## 3. 出力
- 体重、身長、BMIをコンソールに表示する
- 項目名を付けて表示し、項目の間はスペースで区切る
- 表示例
- 体重:70.5kg 身長:175.2cm BMI:23.0
## 4. 作成条件
- エラー処理は行わない
- main関数は作成しない
# 円の面積・周の長さ計算プログラム
円の半径の長さから円の面積と円周を計算する
## 1. 入力
- ******************をキーボードから入力する(小数入力可)
- キーボード入力では入力プロンプトを表示する
- 入力例:
- **********************************
## 2. 処理
- 円の半径から面積と周の長さを計算する
- 計算式:
- ************************************
- ************************************
- 計算結果は小数点以下1桁までに丸める
## 3. 出力
- 半径、面積、周の長さを1行で表示する
- 項目名を付けて表示する
- 項目の間は読点とスペースで区切る
- 表示例:
- ******************************************************
## 4. 作成条件
- エラー処理は行わない
- main関数は作成しない
# 単利計算プログラム
単利での資金の運用結果を計算する
## 1. 入力
- ****************************************をキーボードから入力する
- 元金は整数、その他は小数で入力可
- キーボード入力では入力プロンプトを表示する
- 入力例:
- ***************************
- ***************************
- ***************************
## 2. 処理
- 元金、年利、預け入れ年数から、利息と元利合計を計算する
- 計算式:利息 = ***************************
- 利息は小数点以下を丸めて整数にする
## 3. 出力
- 項目名を付けて、*****************************************を表示する
- 元金、利息、元利合計は*********************************で表示する
- 項目の間は読点とスペースで区切る
- 表示例:
- 元金:100,000円、 年利:2.5%、 年数:3.0年、 利息:7,500円、 元利合計:107,500円
## 4. 作成条件
- エラー処理は行わない
- main関数は作成しない
# 旅行の所要時間計算プログラム
距離と速度から所要時間を計算する
## 1. 入力
- ********************************をキーボードから入力する(小数入力可)
- キーボード入力では入力プロンプトを表示する
- 入力例:
- ***********************
- ***********************
## 2. 処理
- 距離と速度から所要時間を計算する
- 計算式:*************************
- 所要時間は、時間と分に分けて計算する
## 3. 出力
- ********************を項目名を付けて表示する
- 項目の間は読点とスペースで区切る
- 表示例:
- 距離:150.0km、 速度:60.0km/h、 所要時間:2時間30分
## 4. 作成条件
- エラー処理は行わない
- main関数は作成しない
- 直接実行時のみスクリプトを実行する
# 2点間の距離計算
2次元座標PとQの間の距離を計算する
## 1. 入力
- 2つの座標、***********, **********の値を入力する
- 入力例:
- P: x1, y1 > 5.1, 8.2
- Q: x2, y2 > 10.5, 2.9
## 2. 処理
- PとQの間の距離を計算する
- 計算式: ********************************************
- 距離の値は、小数点以下1桁に丸める
## 3. 出力
- 2つの座標の距離を表示する
- 表示例:
- *****************************
## 4. 作成条件
- エラー処理は行わない
# マークダウンファイル抽出プログラム
指定のフォルダとすべてのサブフォルダからマークダウンファイルだけを抽出する
## 1. 入力
- キーボードから*************を入力する
- 入力例: *************を入力してください > C:\python\workspace\chapter13
## 2. 処理
1.****************場合はメッセージを表示して終了する
- 終了メッセージ: 指定されたパスが存在しません
2.************************場合はメッセージを表示して終了する
- 終了メッセージ: 指定されたパスはディレクトリではありません
3.フォルダおよびそのすべてのサブフォルダからマークダウンファイルだけを抽出して
ファイルリストを作る
- マークダウンファイルの拡張子は************************************
- ********************場合はエラーメッセージを出して終了する
- 終了メッセージ: 指定されたフォルダにはマークダウンファイルがありません
4.ファイルリストを表示する
## 3. 出力
- 抽出したマークダウンファイルのリストを表示する
- 指定フォルダからの***********************を表示する
- 1行に1つのパスを表示する
- 相対パスの昇順で表示する
- 表示例
```text
bmi/bmi-req.md
bmi/bmi-spec.md
ex13-1/circle/circle-req.md
ex13-1/circle/circle-spec.md
```
## 作成条件
- なし
# 単語ファイルの読み込みと抽出結果の表示
単語ファイルから単語を入力し、5文字以上の単語の単語リストを作り表示する
## 1. 入力データ
- words.txtファイルから複数の英単語が書かれたデータを入力する
- パスの既定値はカレントディレクトリの直下
- エンコーディングはUTF-8である
- 1行に1つの英単語が記録されているが、単語の前後に余分な空白があるものや、空行も含まれる
- データの例示(. は1つの半角空白文字、□ は1つの全角空白文字を示す)
- **************
- **************
- **************
- **************
- **************
- **************
- **************
- **************
## 2. 処理
- words.txtファイルを1行ずつ読み込み以下の処理を実行する
- 行データの前後にある******************を除いて単語だけを取り出す
- 読み込んだ行データが****なら無視する
- 単語が書かれていたら、総単語数をカウントアップする
- 単語が****************かどうか調べる
- *********なら、単語リストに単語を追加する
- *****************************************をコンソールに表示する
## 3. 表示方法
- 表示例の形式でコンソールに表示する
- 表示例
```text
総単語数:7
長さが5文字以上の単語数:4
apple
watermelon
strawberry
blueberry
```
## 4. 作成条件
- なし
# 取引明細表の集計プログラム
取引明細ファイルの入出金データを集計して精算済み取引明細ファイルを作る
## 1.入力
- 取引明細ファイルを入力する
- ファイル名:************
- パスの既定値:カレントディレクトリの直下
- ファイルエンコーディング:**************
- ファイル形式:**************************
- ファイルの内容
- 1行目はタイトル行:****************************************************
- 2行目以降はデータ行
- ただし、累計入金、累計出金、残高は**************
- 同じ日付を持つデータはない
- データ件数は**********
- データの内容にはエラーがないことを前提とする(CSV内容の妥当性検証は不要)
- データの例示:
| 日付 | 入金 | 出金 | 取引相手 | 累計入金 | 累計出金 | 残高 |
|:-----------|:------|:------|:--------|:---------|:-------|:----|
| 2026-01-18 | 30000 | 0 | A社 | | | |
| 2026-02-02 | 75000 | 0 | F社 | | | |
## 2.処理
- 取引明細の行データを**********にソートする
- 取引明細の各行データの************************を計算してデータを更新する
- 計算方法:
- ******************************************
- ******************************************
- ******************************************
- 更新した取引明細をファイル出力する
## 3.出力
- 更新した取引明細をファイルに出力する
- ファイル名:**********************
- パスの既定値:カレントディレクトリの直下
- ファイルエンコーディング:******
- ファイル形式:CSVファイル(コンマ区切り)
- ファイルの内容
- 1行目はタイトル行:***************************************************
- 2行目以降はデータ行
## 4.作成条件
- なし
# BMIの計算と表示
測定データファイルのデータを使ってBMIを計算する
## 1. 入力データ
- ************************から個人別の測定データを入力する
- パスの既定値はカレントディレクトリの直下である
- ファイルのエンコーディングは******である
- 1行目は項目名、データは2行目以降
- データの例示
- 名前,体重(kg),身長(cm)
- 山田太郎,65.5,172.8
## 2. 処理
- CSVファイルの2行目以降について次の処理を繰り返し適用する
- CSVとして1行ずつ読み込み、名前、体重、身長を得る
- 行データについて以下をチェックする
- 項目数は***********
- *******の項目はない
- 体重、身長は***********************
- 体重、身長は***********************
- チェックして不正だった行データは****************************
- 〇件目は不正なデータです、というエラーメッセージを表示すること
- 表示例:3件目は不正なデータです
- ただし、件数はヘッダー行を除いてカウントする
- データからBMIを計算する
- 計算式: ************************************
- 身長はcm単位で入力されるため、計算前にm単位に変換する
- 計算結果は、******************に丸める
- 計算例:
- 体重:70.5kg 身長:175.2cm → BMI = 70.5 / (1.752 * 1.752) ≈ 23.0
- 名前と体重、身長、BMIをコンソールに表示する
## 3. 表示方法
- 名前と体重、身長、BMIをコンソールに表示する
- 結果は、項目名を付けて表示する。
- 項目の間はスペースで区切る。
- 表示例
- 名前:山田太郎 体重:70.5kg 身長:175.2cm BMI:23.0
## 4. 作成条件
- なし
# BMIの計算と表示
測定データファイルのデータを使ってBMIを計算する
## 1. 入力データ
- CSVファイル(person.csv)から個人別の測定データを入力する
- パスの既定値はカレントディレクトリの直下である
- ファイルのエンコーディングは UTF-8 である
- 1行目は項目名、データは2行目以降
- データの例示
- 名前,体重(kg),身長(cm)
- 山田太郎,70.5,175.2
## 2. 処理
- CSVファイルの2行目以降について次の処理を繰り返し適用する
- コンマ位置で分割し、名前、体重、身長を得る
- 行データについて以下をチェックする
- 項目数は3である
- 空文字の項目はない
- 体重、身長は正しく数値に変換できる
- 体重、身長は正の数である
- チェックして不正だった行データはメッセージを表示して読み飛ばす
- 〇件目は不正なデータです、というエラーメッセージを表示すること
- 表示例:3件目は不正なデータです
- ただし、件数はヘッダー行を除いてカウントする
- データからBMIを計算する
- 計算式: BMI = 体重(kg) / (身長(m) * 身長(m))
- 身長はcm単位で入力されるため、計算前にm単位に変換する
- 計算結果は、小数点以下1桁までに丸める
- 計算例:
- 体重:70.5kg 身長:175.2cm → BMI = 70.5 / (1.752 * 1.752) ≈ 23.0
## 3. 表示方法
- 名前と体重、身長、BMIをコンソールに表示する
- 結果は、項目名を付けて表示する。
- 項目の間はスペースで区切る。
- 表示例
- 名前:山田太郎 体重:70.5kg 身長:175.2cm BMI:23.0
## 4. 作成条件
- クラスを定義する