SPD一覧

リスト3-01

  簡単なプログラム
  │
  ├─変数nameにキーボードから名前を入力する
  └─nameを表示する

リスト3-02

  税額計算
  │
  ├─価格を入力する─変数priceにキーボードから価格を入力する
  ├─税額を計算する─入力した値(price)を整数に変換し、それに0.1を掛けた値をtaxに代入する
  └─税額(tax)を表示する

リスト3-03

  税額計算
  │
  ├─価格を入力する
  │    └─変数priceにキーボードからint型の値(価格)を入力する
  ├─税額を計算する
  │      └─入力した値(price)に0.1を掛けた値をtaxに代入する
  └─税額(tax)を表示する

リスト3-09

  書式付きの表示
  │
  ├─変数msgに、キーボードから文字列を入力する
  └─書式付き表示で、"入力した文字列は{msg}です" のようにmsgの値を表示する

リスト3-10

  式の埋め込み
  │
  ├─変数varに、キーボードからint型の値を入力する
  └─書式付き表示で、"入力値+20 = {var + 20}" のようにvarの値を表示する

練習問題3-2-8-1

  書式付きの表示
  │
  ├─変数nameに、キーボードから文字列を入力する
  └─書式付き表示で、"こんにちは、〇〇さん" の形式でnameの値を表示する

練習問題3-2-8-2

  式の計算と表示
  │
  ├─変数aに、キーボードからfloatの値を入力する
  ├─変数xに、キーボードからfloatの値を入力する
  ├─ax + 3の値を計算して変数yに代入する(axはa×xの意味です)
  └─書式付きの表示で、"答えは〇〇です"の形式でyの値を表示する

練習問題3-2-8-3

  式の計算と表示
  │
  ├─変数kokugo、sugaku、eigoに、それぞれ85, 93, 78を代入する(1つの代入文で書く)
  ├─文字列"国語"、"数学"、"英語"をタブ区切りで表示する(1つのprintでまとめて表示する)
  └─変数kokugo、sugaku、eigoをタブ区切りで表示する(1つのprintでまとめて表示する)

練習問題3-2-8-4

  表示回数を指定する
  │
  ├─変数countにキーボードからintの値を代入する
  └─count個の"#"をコンソールに表示する

リスト4-01

  対数(log)の計算
  │
  ├─mathライブラリをインポートする(読み込む)
  ├─10の自然対数を計算して表示する
  └─20の自然対数を計算して表示する

リスト4-02

サイコロを振って出目を表示する
 │
 ├─tkxlibライブラリからdice関数をインポートする(読み込む)
 ├─サイコロを振って(dice())、出目を変数numberに代入する
 └─numberを表示する

リスト5-07

  代入演算子の働き
  │
  ├─変数varに10を代入する
  ├─var+1を計算し、その値をvarに再代入する(varの値を1だけ増やす)
  └─varを表示する

リスト5-08

  複合代入演算子の働き
  │
  ├─変数varに10を代入する
  ├─varの値を1だけ増やす    ※ 複合代入演算子を使う時の表現です
  └─varを表示する

練習問題5-1-6

  分配個数と余りの計算
   │	
   ├─
   ├─
   └─"一人当たり〇個、余り〇個" の形式で、nとmodを表示する

練習問題5-1-7

  Sin関数の値を計算する
   │
   ├─
   ├─
   ├─
   └─"sin〇 = 〇" の形式でdegとvalを表示する

リスト6-01

 サイコロゲーム
 │
 ├─tkxlibからdice関数をインポートする
 ├─サイコロを振って(dice())、出目を変数numberに代入する
 │
 └─◇─numberは6である
     │    └─「当たり」と表示する
     │
     └─else
           └─「はずれ」と表示する

リスト6-03

  サイコロゲーム
  │
  ├─tkxlibからdice関数をインポートする
  ├─サイコロを振って(dice())、出目を変数numberに代入する
  └─結果を表示する─◇─numberは6である
                      │   └─「当たり」と表示する
                      └─else
                           └─「はずれ」と表示する

練習問題6-1-1A

  正の数か判定する
  │
  ├─変数nにキーボードから整数を入力する
  └─結果を表示する─◇─nは正の数である
                      │   └─"正の数です"と表示する
                      └─else
                           └─"正の数ではありません"と表示する

練習問題6-1-1B

  ログインできたかどうか判定する
  │
  ├─変数passwordにキーボードから文字列でパスワードを入力する
  └─結果を表示する─◇─passwordは"Python"である
                      │    └─"ログイン成功"と表示する
                      └─else
                            └─"パスワードが違います"と表示する

練習問題6-1-1C

  合格かどうか判定する
  │
  ├─変数scoreにキーボードから整数で得点を入力する
  └─結果を表示する─◇─scoreは60以上である
                      │    └─"合格"と表示する
                      └─else
                            └─"不合格"と表示する

練習問題6-1-1D

  暑いかどうか判定する
  │
  ├─変数tempにキーボードから浮動小数点数で気温を入力する
  └─結果を表示する─◇─tempは25度より高い
                      │    └─"暑いです"と表示する
                      └─else
                            └─"暑くありません"と表示する

練習問題6-1-2A

  営業時間かどうか判定する
  │
  ├─変数timeにキーボードから時刻を入力する
  └─結果を表示する─

練習問題6-1-2B

  料金区分を判定する(練習6-1-2B)
  │
  ├─変数ageにキーボードから年齢を入力する
  └─結果を表示する─

練習問題6-1-2C

  うるう年かどうか判定する
  │
  ├─変数yearにキーボードから西暦年を入力する
  └─結果を表示する
         └─

練習問題6-1-2D

  ドルを円に換算する
  │
  ├─変数rateにキーボードから1ドル当たりの円換算レートを整数で入力する
  └─ドルを円に換算する
       └─

リスト6-05

  サイコロの出目の判定
  │
  ├─tkxlibからdice関数をインポートする
  ├─サイコロを振って(dice())、出目を変数numberに代入する
  │
  └─結果の表示─◇─numberは1
                  │    └─「出目は1」と表示する
                  ◇─numberは2
                  │    └─「出目は2」と表示する
                  ◇─numberは3
                  │    └─「出目は3」と表示する
                  └─else
                        └─「出目は1、2、3ではない」と表示する

リスト6-08

 BMIによる肥満度の判定
 │
 ├─キーボードから変数heightに身長(cm)を入力する
 ├─キーボードから変数weightに体重(kg)を入力する
 ├─BMIを計算して変数bmiに代入する
 │      └─bmi = weight / ((height / 100) ** 2)
 ├─BMIを小数点以下1桁までに丸める
 │
 └─区分を表示する─◇─bmiは30以上
                     │     └─"肥満:"とbmiの値を並べて表示する
                     ◇─bmiは30未満かつ25以上
                     │    └─"太りすぎ:"とbmiの値を並べて表示する
                     ◇─bmiは25未満かつ18.5以上
                     │    └─"健康:"とbmiの値を並べて表示する
                     └─else
                           └─"低体重:"とbmiの値を並べて表示する

リスト6-10

 BMIによる肥満度の判定
  │
  ├─キーボードから変数heightに身長(cm)を入力する
  ├─キーボードから変数weightに体重(kg)を入力する
  ├─BMIを計算して変数bmiに代入する
  │        └─bmi = weight / ((height / 100) ** 2)
  ├─BMIを小数点以下1桁までに丸める
  │
  └─区分を表示する─◇─bmiは30以上
                      │    └─"肥満:"とbmiの値を並べて表示する
                      ◇─bmiは25以上
                      │    └─"太りすぎ:"とbmiの値を並べて表示する
                      ◇─bmiは18.5以上
                      │    └─"健康:"とbmiの値を並べて表示する
                      └─else
                            └─"低体重:"とbmiの値を並べて表示する

リスト6-12

 平方根の計算
 │
 ├─キーボードから、変数xに整数を入力する
 ├─◇─xは負の数
 │          └─xに-1を掛けて正の数にする
 └─xの平方根を計算して表示する

リスト6-14

  条件式の使い方
  │
  ├─tkxlibからdice関数をインポートする
  ├─サイコロを振って(dice())、出目を変数numberに代入する
  ├─変数messageに、numberが6なら"当たり"、それ以外は"はずれ"を代入する
  └─messageを表示する

練習問題6-2-1A

信号の色から動作を指定する
  │
  ├─変数colorにキーボードから信号の色を表す単語を文字列で代入する
  │
  └─色に応じた動作を表示する─ 

練習問題6-2-1B

  得点から評価を表示する
  │
  ├─キーボードから得点を整数で変数scoreに代入する
  │
  └─得点に応じた評価を表示する─

練習問題6-2-2A

  曜日から予定を表示する
  │
  ├─キーボードから曜日を文字列で変数dayに代入する   ※ "月"、"火"など
  │
  └─曜日に応じた予定を表示する─

練習問題6-2-2B

  気温に適合する服装を表示する
  │
  ├─キーボードから気温を浮動小数点数で変数tempに代入する
  │
  └─気温に応じた服装を表示する─

練習問題6-2-2C

  年齢ごとの料金を表示する
  │
  ├─キーボードから年齢を整数で変数ageに代入する
  │
  └─年齢ごとの料金を表示する─

練習問題6-2-2D

  送料の表示
  │
  ├─キーボードから、購入金額を整数で変数priceに入力する
  ├─変数shipping_feeに、priceが3000以上なら「無料」、それ以外は「500円」を代入する。
  └─shipping_feeを表示する

リスト7-02

  リストのすべての要素を表示する
  │
  └─[21, 35, 16]のすべての要素を表示する─↻─for: num ← [21, 35, 16]
                                            │
                                            └─printでnumを表示する
  

リスト7-04

  リストのすべての要素を表示する
  │
  ├─numbersに、リスト[21, 35, 16]を代入する
  └─numbersのすべての要素を表示する ─↻─for: num ← numbers
                                        │
                                        └─printでnumを表示する
  

リスト7-05

  リストのすべての要素を表示する
  │
  ├─numbersに、リスト[21, 35, 16]を代入する
  └─numbersのすべての要素を表示する 
          └─↻─for: num ← numbers
              │
              └─printでnumを表示する
  

リスト7-07

  3 回繰り返す
  │
  └─↻─for: i ← range(3)
      │
      └─iと "Hello"  をスペースで区切って表示する

リスト7-09

 リストの得点を評価する
  │
  ├─変数scoresに得点のリスト[85, 92, 45, 78, 55, 95]を代入する
  └─得点により合否を判定して表示する
        └─↻─for: score ← scores
            │
            ├─◇─score は60以上
            │  │    └─変数grade に "合格" を入れる
            │  └─else
            │        └─変数grade に "不合格" を入れる
            │
            └─score とgrade をコロン( : )で区切って表示する

リスト7-11

  リストの得点を階級別に集計する
  │
  ├─変数scoresに得点のリストを代入する
  │    └─scores = [66, 95, 58, 72, 45, 80, 61, 75, 35, 88,
  │                    64, 53, 70, 40, 78, 63, 82, 55, 67, 48,
  │                    73, 68, 50, 62, 77, 74, 71, 60, 69, 65]
  │
  ├─階級ごとの人数を入れる変数(out, exe, pro, bas, ins)に0を代入する
  │
  ├─階級別の件数を集計する
  │     └─↻─for: score ← scores
  │         │
  │         └─◇─scoreが90以上
  │             │    └─outを1増やす
  │             ◇─scoreが80以上
  │             │    └─exeを1増やす
  │             ◇─scoreが70以上
  │             │    └─proを1増やす
  │             ◇─scoreが60以上
  │             │    └─basを1増やす
  │             └─else
  │                    └─insを1増やす
  │
  └─階級ごとの人数を入れた変数を表示する
         └─out, exe, pro, bas, insの変数名と値を各行に1つずつ、
              コロンと半角空白で区切って表示する(例 out: 10)

練習問題7-1-1

  1000円以上の価格だけを抜き出す
  │
  ├─変数pricesに価格のリストを代入する
  │     └─prices = [120, 1550, 980, 305, 1100, 280, 1360, 330, 880, 900, 1700]
  │
  └─1000円以上の価格だけを表示する
         └─↻─for: price ← prices
             │
             └─◇─priceは1000円以上
                        └─priceを、改行せず半角空白で区切って表示する

練習問題7-1-2

体温のリストを範囲別に集計する
  │
  ├─変数temps に体温のリストを代入する
  │  └─temps = [36.2, 37.8, 36.7, 35.9, 36.4, 37.2, 38.1, 36.0, 36.5, 37.4, 36.8]
  ├─範囲ごとの件数を入れる変数(fever, warm, normal, low)に0 を代入する
  ├─範囲別の件数を集計する
  │  └─
  │      
  │      
  │      
  │      
  │      
  │      
  │      
  │      
  │      
  │
  └─fever, warm, normal, lowの変数名と値を各行に1 つずつ、
      コロンと半角空白で区切って表示する(例 fever: 2 )

練習問題7-1-3

  送料の総額を計算して表示する
  │
  ├─重さのリストを変数weightsに代入する
  │   └─weights = [1.5, 0.8, 3.5, 2.0, 6.2, 4.1, 0.7]
  ├─送料の総額を入れる変数total_amountにゼロを代入する
  │
  ├─送料の総額を計算する	
  │    └─
  │        
  │        
  │        
  │        
  │        
  │        
  │        
  │       
  │       
  │
  └─"送料の総額"とtotal_amountをコロン(:)とスペースで区切って表示する

リスト7-13

  リストのデータの平方根を計算して表示する
  │
  ├─変数dataにデータのリストを代入する
  │   └─data = [42.7, 8.3, 91.5, 15.0, 3.9, 67.2, -24.8, 0.6, 59.1, 88.4]
  │
  ├─dataの要素の平方根を計算して表示する
  │   └─↻─for: x ← data
  │       │
  │       ├─◇─xは負である 
  │       │         ├─"負の値です:"とxを並べて表示する
  │       │         └─breakでループを脱出する
  │       │ 
  │       ├─xの平方根を計算し、小数点以下2桁に丸めてsquare_rootに代入する
  │       └─xとsquare_rootを、コロンとタブで区切って表示する
  │
  └─"=処理終了="と表示する

リスト7-15

  リストのデータの平方根を計算して表示する
  │
  ├─変数dataにデータのリストを代入する
  │    └─data = [42.7, 8.3, 91.5, 15.0, 3.9, 67.2, -24.8, 0.6, 59.1, 88.4]
  │
  ├─dataの要素の平方根を計算して表示する
  │    └─↻─for: x ← data
  │        │
  │        ├─◇─xは負である
  │        │       ├─"負の値です:"とxを並べて表示する
  │        │       └─continueでループの先頭に戻る
  │        ├─xの平方根を計算し、小数点以下2桁に丸めてsquare_rootに代入する
  │        └─xとsquare_rootを、コロンとタブで区切って表示する
  │
  └─"=処理終了="と表示する

練習問題7-2-1

  カゴに入れられる荷物の総重量を求める
  │
  ├─荷物の重量のリストを変数weightsに代入する
  │     └─weights = [4.1, 1.5, 7.2, 10.2, 3.5, 6.5, 2.3, 8.8, 5.2]
  ├─総重量を入れる変数total_weightに0を代入して初期化する
  │
  ├─カゴに入る荷物の総重量を求める
  │    └─
  │        
  │        
  │        
  │        
  │        
  │        
  │
  └─総重量を表示する
        ├─区切り線("-----")を表示する
        └─"総重量" とtotal_weightをコロン(:)とタブで区切って表示する

練習問題7-2-2

  リンゴのサイズ別の個数を集計して表示する
  │
  ├─リンゴの重さのリストを変数applesに代入する
  │     └─apples = [320, 120, 520, 220, 250, 610, 350, 400, 280, 850, 510]
  ├─サイズ別の変数large, medium, smallにゼロを代入して初期化する
  ├─サイズ別に全要素の個数を集計する
  │    └─
  │        
  │        
  │        
  │        
  │        
  │        
  │        
  │        
  │        
  │ 
  └─サイズ別の個数を表示する
        └─large、medium、smallの変数名と値を各行に1つずつ、
             コロン(:)と半角空白で区切って表示する(例 large: 3)

リスト8-01

電卓プログラム
│
├─キーボード入力のためにtkxlibからget_int関数をインポートする
├─変数totalに0を代入して初期化する
│
├─キーボード入力の合計を計算する
│      └─↻─while: True
│          │
│          ├─valueにキーボードから整数を入力する
│          ├─◇─valueは0である
│          │          └─breakでループを脱出する  
│          │
│          ├─valueを表示する
│          └─totalにvalueを加算する
│
├─区切り線("-----")を表示する
└─"合計:"とtotalを並べて表示する

練習問題8-1-1

 最大値を求める
 │
 ├─キーボード入力のためにtkxlibからget_int関数をインポートする
 ├─0を変数max_scoreに代入する
 ├─
 │  
 │  
 │  
 │  
 │  
 └─最大値を表示する

練習問題8-1-2

  偶数と奇数の個数を数える
  │
  ├─キーボード入力のためにtkxlibからget_int関数をインポートする
  ├─0を変数even_countに代入する
  ├─0を変数odd_countに代入する
  │
  ├─
  │  
  │  
  │  
  │  
  │  
  │  
  │  
  │  
  │  
  │
  ├─"偶数=〇〇個"の形式でeven_countを表示する
  └─"奇数=〇〇個"の形式でodd_countを表示する

練習問題8-1-3

 テストの成績を集計する
 │
 ├─tkxlibからget_int関数をインポートする
 ├─count(件数), total(合計), max_score(最高点)に0を代入する
 ├─min_score(最低点)に100を代入する
 │
 ├─
 │  
 │  
 │  
 │  
 │  
 │  
 │  
 │  
 │  
 │  
 │  
 │  
 │  
 │
 └─◇─入力件数はゼロではない
            ├─平均を計算する─ average = round(total / count, 1)
            └─件数、平均点、最高点、最低点を1行にならべて表示する
                  └─表示例 ─ 件数:10、平均点:72.0、最高点:98、最低点:65
 

リスト8-03

 入力した整数の合計を求める
 │
 ├─tkxlibからget_int関数をインポートする
 ├─0を変数totalに代入する
 │
 ├─↻─while: キーボードからvalueに整数を入力し、その値がゼロではない 
 │  ├─valueを表示する
 │  └─total += value
 │
 ├─区切り線("-----")を表示する
 └─"合計:"とtotalを並べて表示する

練習問題8-2-1

  入力した文字列をそのまま表示する
  │
  ├─tkxlib  からget_str 関数をインポートする
  └─↻─while: True
      │
      ├─キーボードからlineに文字列を入力する
      ├─◇─lineは空文字("")である
      │          └─breakでループを脱出する
      └─lineを表示する

リスト9-11

リストの要素を取り出す
  │
  ├─名前のリストnames を作る─names ← ["Tom", "Mary", "John", "Alice"]
  │
  └─リストnames から名前を取り出して表示する
        └─↻─for:name  ← names
            │
            └─name をコンソールに表示する

リスト9-12

2次元リストから要素を取り出す
  │
  ├─体重と身長のリストを要素とするリストdataを作る
  │    └─[[65.5, 172.8], [50.8, 158.2], [75.7, 178.3]]
  │
  └─リストdataから要素を取り出して表示する
        └─↻─for:person  ← data
            │
            └─personをコンソールに表示する

リスト9-13

2次元リストの要素からインデックスで値を取り出す
  │
  ├─体重と身長のリストを要素とするリストdataを作る
  │    └─[[65.5, 172.8], [50.8, 158.2], [75.7, 178.3]]
  │
  └─リストdataから要素を取り出して表示する
        └─↻─for:person  ← data
            │
            └─person[0] とperson[1] を並べてコンソールに表示する

リスト9-14

2次元リストの要素からアンパックして変数に値を取り出す
  │
  ├─体重と身長のリストを要素とするリストdataを作る
  │    └─[[65.5, 172.8], [50.8, 158.2], [75.7, 178.3]]
  │
  └─リストdataから要素を取り出して表示する
        └─↻─for:weight, height← data
            │
            └─weightとheightを並べてコンソールに表示する

リスト9-37

成績の最大値、最小値、平均値を求める
│
├─変数scoresに[55, 75, 58, 66, 81, 72, 95, 68, 71, 85]を代入する
├─変数max_scoreにscoresの最大値を代入する
├─変数min_scoreにscoresの最小値を代入する
├─scoresの平均値を小数点以下1桁までに丸めて、変数mean_scoreに代入する
└─"最大値=〇、最小値=〇、平均値=〇"の形式で、max、min、mean_scoreを表示する

リスト9-39

 成績を昇順に並べ替えて表示する
 │
 ├─変数scoresに[55, 75, 58, 66, 81, 72, 95, 68, 71, 85]を代入する
 ├─scoresを昇順に並べ替えて変数sorted_scoresに代入する
 └─sorted_scoresを表示する

リスト9-41

  CSV 形式の文字列を分割して表示する
  │
  ├─リストdataを用意する
  │      └─data = [
  │               "名前, 体重(kg), 身長(cm)",
  │               "山田太郎,65.5,172.8",
  │               "佐藤花子,50.8,158.2",
  │               "鈴木一郎,75.7,178.3",
  │              "== end of data ==",
  │          ]
  │
  ├─変数rowsに、dataの先頭の行と、最後の行を除いた要素を代入する
  │
  └─↻─for: csv← rows
      │
      ├─csvをコンマで分割してリストpeopleに代入する
      └─people を表示する

練習問題9-4-1

リストの要素を集計する
 │
 ├─変数temperaturesに気温のリストを代入する
 │    └─temperatures = [23.5, 18.2, 25.8, 21.3, 19.7, 27.5, 22.1, 24.6, 20.5, 26.3]
 │
 ├─
 ├─
 ├─
 │
 ├─最高気温、最低気温、平均気温を表示する
 │       └─"最高気温=〇、最低気温=〇、平均気温=〇"の形式で表示する
 ├─temperaturesを昇順にソートしたリストを作成し、変数sorted_temperaturesに代入する
 └─sorted_temperaturesを表示する

リスト10-02

   リスト内包表記
   │
   ├─変数numbersに[3, 2, 5]を代入する
   ├─リスト内包表記で新しいリストnew_numbersを作成する 
   │    ├─for: x ← numbers
   │    └─変換: x * 2
   └─new_numbersを表示する

リスト10-04

   リスト内包表記
   │
   ├─変数numbersに[2, 7, 8, 5, 6]を代入する
   ├─リスト内包表記で新しいリストnew_numbersを作成する 
   │    ├─for: x ← numbers
   │    ├─変換: x * 2
   │    └─条件: x % 2 == 0
   └─new_numbersを表示する

リスト10-05

 2次元リストを扱うリスト内包表記
   │
   ├─変数dataに[[65.5, 172.8],[50.8, 158.2],[75.7, 178.3]]を代入する
   ├─リスト内包表記で新しいリストbmiを作成する
   │    ├─for: weight, height ← data
   │    └─変換: weight / (height / 100) ** 2
   └─bmiを表示する

練習問題10-1-1

  平方根を求めるリスト内包表記
  │
  ├─変数numbersに[3,2,5]を代入する
  ├─
  │  
  │  
  └─resultを表示する

練習問題10-1-2

  条件付きリスト内包表記
  │
  ├─変数numbersに[15,22,31,18,45,27,36]を代入する
  ├─
  │  
  │  
  │  
  └─resultを表示する

練習問題10-1-3

  2次元リストを扱うリスト内包表記
  │
  ├─変数dataに[[100,80],[85,95],[70,60]]を代入する
  ├─
  │  
  │  
  └─averagesを表示する

リスト10-09

  インデックスと要素を表示する
  │
  ├─animals に["dog", "cat","rabbit"] を代入する
  └─↻─for: i, animal ← enumerate(animals)
      │
      └─iとanimalを並べて表示する

リスト10-11

  2つのリストの要素をまとめて表示する
  │
  ├─2つのリストを作成する:
  │     ├─names = ["田中","佐藤", "山田"]
  │     └─heights = [175.3, 163.5, 182.1]
  │
  └─↻─for: name, height ← zip(names, heights)
      │
      └─nameとheightを並べて表示する

リスト10-13

  3つのリストを1つにまとめる
  │
  ├─3つのリストを作成する:
  │      ├─names = ["田中", "佐藤", "山田"]
  │      ├─weights = [70.2, 55.0, 68.4]
  │      └─heights = [175.3, 163.5, 182.1]
  │
  ├─3つのリストを1つのリストpeopleにまとめる
  │      └─people = list(zip(names, weights, heights))
  │
  └─peopleを表示する

練習問題10-2-1

 果物の番号と名前を表示する
 │
 ├─fruitsに["apple", "banana", "orange", "grape"]を代入する
 └─


練習問題10-2-2

 都市名と人口を表示する
 │
 ├─2つのリストを作成する:
 │     ├─cities = ["東京", "大阪", "名古屋"]
 │     └─populations = [1396, 275, 233]
 │
 └─
     
     

練習問題10-2-3

 在庫情報のリストを生成する
 │
 ├─3つのリストを作成する:
 │      ├─products = ["ノートPC", "タブレット", "スマホ"]
 │      ├─prices = [120000, 80000, 95000]
 │      └─stocks = [15, 23, 42]
 │
 ├─
 │  
 │
 └─inventoryを表示する

リスト12-09

キーがあるか調べてから値を取得する
  │
  ├─本を表す辞書を作る
  │    └─book  ← {"title": "坊ちゃん", "author": "夏目漱石", "stock": 10}
  │
  └─◇─辞書に"price" というキーがある
      │    └─book["price"] をコンソールに表示する
      └─else
            └─" キー'price'がない" と表示する

練習問題12-1

 辞書の基本操作
 │
 ├─辞書を作って変数bookに代入する
 │      └─book = {"title": "坊ちゃん", "author": "夏目漱石", "stock": 10}
 ├─キー"price"の値をget()メソッドで読み出して変数priceに代入する。エラー時の戻り値は
 │   "キー無し"
 ├─priceを表示する
 ├─新しい要素として"price": 1000を追加する
 ├─bookを表示する
 ├─在庫数(stock)を12に変更する
 ├─在庫数(stock)を変数stockに代入する
 ├─在庫数(stock)を"在庫数:〇〇個"の形式で表示する
 ├─価格(price)を削除して、値をpriceに代入する
 ├─priceを表示する
 ├─bookを{"stock":5, "price": 1100}とマージする
 └─bookを表示する

リスト12-12

 辞書のすべてのキーと値を表示する
 │
 ├─成績を表す辞書を作る
 │      └─score = {"id": 1201, "English": 90, "Math": 85, "Language": 92}
 │
 └─辞書scoreのすべてのキーと値を表示する
        └─↻─for: key ← score
            │
            └─キーと値をコロン(:)で区切って表示する

リスト12-15

 辞書のキーと値を順に表示する
 │
 ├─成績を表す辞書を作る
 │      └─score = {"id": 1201, "English": 90, "Math": 85, "Language": 92}
 │
 └─辞書scoreのすべてのキーと値を表示する
        └─↻─for: key, value ← score.items()
            │
            └─print: キーと値をコロン(:)で区切って表示する

練習問題12-2-1

 商品辞書のすべてのキーと値を表示する
 │
 ├─商品を表す辞書を作成する
 │  └─product = {"商品名": "ボールペン", "価格": 180, "在庫": 25, "色": "黒"}
 │
 └─全要素を表示する ─
                        
                        

リスト12-18

 ユーザーの検索
 │
 ├─ユーザーのリストを作成する:
 │	  └─users = [
 │	           {"id": 103, "name": "tanaka", "role": "admin"},
 │            {"id": 105, "name": "sasaki", "role": "user"},
 │            {"id": 100, "name": "maeda", "role": "user"},  ]
 │
 └─sasakiを検索して表示する:
        └─↻─for: user ← users
            │
            └─◇─userの名前(name)はsasakiである
                        ├─printでuserのid, name, roleを並べて表示する
                        └─breakでループを抜ける

リスト12-21

 検索用の辞書を作成する
 │
 ├─ユーザーのリストを作成する:
 │      └─users = [
 │              {"id": 103, "name": "tanaka", "role": "admin"},
 │              {"id": 105, "name": "sasaki", "role": "user"},
 │              {"id": 100, "name": "maeda", "role": "user"},  ]
 │
 ├─新規に空の辞書を作成する─  user_map = {}   
 │
 ├─user_mapにユーザー情報を追加する:
 │     │
 │     └─↻─for: user ← users
 │         │
 │         ├─データを取り出しておく(式を見やすくするため)
 │         │    └─user_id, name, role = user["id"], user["name"], user["role"]
 │         │
 │         └─辞書に登録する─ user_map[name] = {"id": user_id , "role": role}
 │
 └─user_mapからsasakiを検索して表示する   
	   ├─ user = user_map["sasaki"]
	   └─printで"sasaki"とuser["id"]とuser["role"]を並べて表示する

リスト12-23

 簡単な辞書内包表記の例
 │
 ├─リストを作成する─ numbers = [1, 2, 3]
 │
 ├─辞書内包表記で、numbersからsquare_mapを作る
 │            ├─for: n ← numbers
 │            └─変換
 │                  ├─キー: n
 │                  └─値: n ** 2
 │
 └─square_mapの内容を表示する

リスト12-25

 検索用の辞書を作成する
 │
 ├─ユーザーのリストを作成する:
 │      └─users = [
 │              {"id": 103, "name": "tanaka", "role": "admin"},
 │              {"id": 105, "name": "sasaki", "role": "user"},
 │              {"id": 100, "name": "maeda", "role": "user"},  ]
 │
 ├─検索用の辞書を作る
 │     └─辞書内包表記で、usersからuser_mapを作る
 │            ├─for: user ← users
 │            └─変換
 │                  ├─キー: user["name"]
 │                  └─値: {"id":user["id"], "role": user["role"]}
 │
 └─user_mapからsasakiを検索して表示する
	   ├─user = user_map["sasaki"]
	   └─printで"sasaki"とuser["id"]とuser["role"]を並べて表示する

リスト12-28

 辞書のリストのソート
 │
 ├─ユーザー辞書のリストを作成する
 │     └─users = [
 │            {"id": 103, "name": "tanaka", "role": "admin"},
 │            {"id": 105, "name": "sasaki", "role": "user"},
 │            {"id": 100, "name": "maeda", "role": "user"}, ]
 │
 ├─ユーザー辞書のリストを、"id"の降順にソートする   
 │
 └─リストの全要素を表示する─↻─for: user  ← users
                               │
                               └─user をprint で表示する

練習問題12-3-5

 検索用辞書の作成
 │
 ├─商品辞書のリストを作成する
 │       └─products = [
 │            {"id": 1, "name": "apple", "price": 150},
 │            {"id": 2, "name": "orange", "price": 200},
 │            {"id": 3, "name": "grape", "price": 350},
 │          ]
 │
 ├─検索用の辞書を作る
 │     └─
 │         
 │         
 │         
 │         
 │
 └─"orange"を検索して表示する
        ├─product = product_map["orange"]
        └─printで"orange"とproductのid、productのpriceを並べて表示する

練習問題12-3-6

 学生辞書のリストをソートする
 │
 ├─学生辞書のリストを作成する
 │       └─students = [
 │              {"id": 201, "name": "yamada", "score": 72},
 │              {"id": 202, "name": "suzuki", "score": 95},
 │              {"id": 203, "name": "honda", "score": 68},
 │              {"id": 204, "name": "inoue", "score": 88},
 │            ]
 │
 ├─
 │
 └─学生辞書のリストの内容を表示する
        └─↻─for:  student ← students
            │
            └─print(student)

リスト13-03

     関数:print_message
      │
      ├─目的:メッセージを表示する
      ├─引数:なし
      ├─戻り値:なし
      │
      └─処理
          └─" こんにちは" を表示する

     関数呼び出しの例
      │
      └─print_message 関数を実行する

リスト13-05

 関数: print_message 
 │
 ├─目的:メッセージを表示する 
 ├─引数
 │   └─name: メッセージに表示する名前   
 ├─戻り値:なし
 └─処理
      └─"こんにちは{name}さん"を表示する   

 関数の使用例
 │
 └─引数に"太郎"を指定して、print_message関数を呼び出す   
         └─print_message("太郎")

リスト13-07

 関数: function 
 │
 ├─目的:式の値を計算する 
 ├─引数
 │   └─x: 計算する値
 ├─戻り値:計算結果の式の値   
 └─処理
      └─x**2 + x + 1の値を計算して返す

 関数の使用例
 │
 └─function(10)を実行して、戻り値をコンソールに表示する   

リスト13-09

 関数: score 
 │
 ├─目的:3科目のテストの合計と平均を計算する 
 ├─引数   
 │   ├─math: 数学のテストの点数
 │   ├─science: 理科のテストの点数
 │   └─english: 英語のテストの点数
 │   
 ├─戻り値:合計と平均のタプル    
 │
 └─処理
      ├─合計を計算して変数totalに代入する
      ├─平均を計算して小数点以下1桁までに丸めて、変数averageに代入する
      └─totalとaverageをタプルにして返す   

 関数の使用例
 │
 ├─score(80, 70, 60)を実行して、戻り値を変数totalとaverageに代入する   
 └─合計(total)と平均(average)を、"合計=〇〇、平均=〇〇.〇"の形式で表示する

リスト13-11

 関数: calc_price 
 │
 ├─目的:税込みの価格を計算する 
 ├─引数
 │   ├─price: 商品の税抜き価格
 │   └─tax_rate = 0.1: 税率   
 ├─戻り値:税込みの価格
 └─処理
      └─税込みの価格を計算し、整数にして返す
               └─return  int(price * (1 + tax_rate))   

 関数の使用例
 │
 ├─"価格=〇〇"の形式でcalc_price(1000)の戻り値を表示する
 └─"価格=〇〇"の形式でcalc_price(1000, 0.08)の戻り値を表示する

練習問題13-1-1

 関数: estimate_reading_time
 │
 ├─目的:読み終わるのにかかる日数を見積もる
 ├─引数
 │   ├─
 │   └─
 │
 ├─戻り値:読み終わるまでの日数(日)
 │
 └─処理
      ├─
      │  
      └─端数を切り上げて、読み終わるまでの日数を整数にして返す
                  └─return math.ceil(days)
 
 関数の使用例
 │
 ├─
 │  
 └─変数daysの値を"読み終わるまでの日数=〇〇日"の形式で表示する

練習問題13-1-2

 関数: format_title
 │
 ├─目的:タイトルの前後に記号を付ける
 ├─引数
 │   ├─
 │   └─
 │
 ├─戻り値:記号を付けたタイトルの文字列
 │
 └─処理
      └─
          
 
 関数の使用例
 │
 ├─タイトル"吾輩は猫である"を装飾する
 │     └─
 └─装飾したタイトルを表示する
        └─print(title)

練習問題13-1-3

 関数: move_position
 │
 ├─目的:移動後の座標を返す
 ├─引数
 │   ├─position : 現在の座標、タプル (x, y)
 │   └─direction : 移動方向("up"、"down"、"left"、"right")
 │     
 ├─戻り値: 移動後の座標、タプル (new_x, new_y)
 │
 └─処理
     ├─現在の座標をxとyにアンパックする
     │        └─x, y = position
     ├─
     │  
     │  
     │  
     │  
     │  
     │  
     │  
     │  
     │  
     │
     └─戻り値として新しい座標を返す
                └─return (x, y)

 関数の使用例
 │
 ├─現在の座標が(0, 0)で、移動方向が"up"のときの新しい座標を変数positionに代入する
 │      └─
 └─変数positionの値を"新しい座標=〇〇"の形式で表示する(タプルをそのまま表示)

リスト15-01

テキストファイルの一括入力
  │
  ├─file_path に"sample.txt"のPathオブジェクトを作って代入する
  │
  ├─file_pathを使って、dataにファイル内容を一括入力する
  │      └─ただしファイルのエンコーディングはUTF-8 とする
  └─dataを表示する

リスト15-02

テキストファイルを1行ずつ入力する
  │
  ├─file_path に"sample.txt"のPathオブジェクトを作って代入する
  └─with文で処理する
          ├─file_path を入力モード("r" )で開いてファイルオブジェクトf を作る
          │      └─ただし、ファイルエンコーディングはUTF-8とする
          │
          └─1行ずつ入力して表示する─↻─for:line← f
                                        │
                                        └─改行コードを付けないでlineを表示する

リスト15-03

テキストを1行ずつ出力する
  │
  ├─file_path に"sample2.txt"のPathオブジェクトを作って代入する
  │
  └─with文で処理する
          ├─file_path を出力モード("w" )で開いてファイルオブジェクトf を作る
          │    └─ファイルエンコーディングはUTF-8
          │
          ├─文字列を出力する─f を使って、"1行目\n" を出力する
          │
          └─数値を出力する┬─num に123 を代入する
                            ├─f を使って、"2行目:〇\n" の形式でnum を出力する
                            └─f を使って、文字列にしたnum を出力する

リスト15-04

テキストファイルの一括出力
  │
  ├─出力データを作る─data← "1行目の出力データ\n2行目の出力データ\n3行目の出力データ\n"
  ├─file_path に"sample2.txt"のPathオブジェクトを作って代入する
  │
  └─file_path を使って、dataを一括出力する
          └─ただしファイルのエンコーディングはUTF-8 とする

リスト15-05

リストを一括出力する
  │
  ├─出力するリストを作る
  │      └─data = ["apple", "banana", "cherry"]
  │
  ├─リストの要素に改行コードを付加したリストを作る
  │      └─リスト内包表記で新しいリストnew_dataを作る
  │              ├─for:item←data
  │              └─変換:item+"\n"
  │
  ├─file_path に"list.txt"のPathオブジェクトを作って代入する
  └─with文で処理する
        ├─file_path を出力モード("w" )で開いてファイルオブジェクトf を作る
        │    └─ファイルエンコーディングはUTF-8
        │
        └─f を使って、new_dataを一括出力する

リスト15-07

テキストファイルの一括入力
  │
  ├─file_path に"no_exist.txt"のPathオブジェクトを作って代入する
  │
  └─〇─try:
      │  ├─file_path を使って、dataにファイル内容を一括入力する
      │  │      └─ただしエンコーディングはUTF-8 とする
      │  └─dataを表示する
      │
      〇─except FileNotFoundError as e:
          └─"ファイルが見つかりません:\n" とe を表示する

リスト15-08

テキストファイルの一括入力
  │
  ├─file_path に"sample.txt"のPathオブジェクトを作って代入する
  │
  └─〇─try:
      │  ├─file_path を使って、dataにファイル内容を一括入力する
      │  │      └─ただしエンコーディングはUTF-8 とする
      │  └─dataを表示する
      │
      〇─except(OSError, UnicodeDecodeError) as e:
          └─"ファイル入力エラーです:\n" とe を表示する

リスト15-09

テキストを一括出力する
  │
  ├─file_path に"output.txt" のPathオブジェクトを作って代入する
  │
  ├─出力データを作る─data←"apple\nbanana\ncherry\n"
  └─〇─try:
      │  └─file_path を使って、dataを一括出力する
      │              └─ただしファイルエンコーディングはUTF-8 とする
      │
      〇─except (OSError, UnicodeEncodeError) as e:
          └─"ファイル出力エラーです:\n" とe を表示する

リスト15-10

関数:sqrt
  │
  ├─目的:平方根を計算する
  ├─引数
  │    └─x :平方根を求める値
  ├─戻り値:x の平方根の値
  │
  └─処理
        └─◇─x は負である
            │    └─ValueError("負の平方根は計算できません")を発生させる
            │
            └─else
                  └─x ** 0.5  の値を返す

計算処理
  │
  ├─tkxlibからget_float関数をインポートする
  ├─キーボードからnumberに小数を入力する
  └─〇─try:
      │  ├─sqrt関数でnumberの平方根を計算して答えをresultに代入する
      │  └─resultを小数点以下1桁に丸めて"平方根=〇〇.〇"の形式で表示する
      │
      〇─except ValueError as e:
          └─"エラー\n" とe を表示する

リスト15-12

  CSV をリストとして読み出す
  │
  ├─入力ファイル(data.csv)のパスを作ってfile_path に入れる
  └─with文で処理する
        ├─file_path を開いてファイルオブジェクトf を作る
        │      └─ただし、入力モード("r")、エンコードはUTF-8 、newline="" とする
        │
        ├─ファイルオブジェクトf から、CSV のリーダーを作ってreaderに入れる
        ├─readerから1 行読み出してheaderに入れる
        └─残りのデータを1行ずつ読み出して表示する
                └─↻─for:row ← reader
                    │
                    └─row、"->"、row[0]、row[1]、row[2]を並べて表示する

リスト15-13

 リストをCSV として書き込む
 │
 ├─リストdataを作る── data = [
 │                        ["名前", "年齢", "住所"],
 │                        ["田中","30","東京"],
 │                        ["佐藤","25","大阪"],
 │                        ["鈴木","28","福岡"] ]
 │
 ├─出力ファイル(data.csv)のパスを作ってfile_path に代入する
 └─with文で処理する
       ├─file_pathを開いてファイルオブジェクトf を作る
       │    └─ただし、出力モード("w" )、エンコーディングはUTF-8 、newline=""とする
       │
       ├─ファイルオブジェクトf からCSV のライターを作ってwriterに入れる
       └─writerで、dataを一括出力する

リスト15-14

CSVを辞書として読み出す
  │
  ├─入力ファイル(data.csv)のパスを作って、file_path に入れる
  └─with文で処理する
        ├─file_path を開いてファイルオブジェクトf を作る
        │    └─ただし、入力モード("r" )、ファイルエンコードはUTF-8 、newline=""とする
        │
        ├─ファイルオブジェクトfから辞書リーダーを作ってdict_readerに入れる
        └─↻─for:row ← dict_reader
            │
            └─row 、 "->" 、row["名前"]、row["年齢"]、row["住所"]を並べて表示する

リスト15-15

辞書をCSV として書き込む
  │
  ├─辞書を作る─dict_data = 
  │                    [ {"名前": "田中", "年齢":"30",  "住所": "東京"},
  │                      {"名前": "佐藤", "年齢":"25",  "住所":" 大阪"},
  │                      {"名前": "鈴木", "年齢":"28",  "住所": "福岡"} ]
  │
  ├─出力ファイル(data.csv)のパスを作ってfile_path に入れる
  └─with文で処理する
        ├─file_path を開いてファイルオブジェクトf を作る
        │      └─ただし、出力モード("w" )、エンコーディングはUTF-8 、newline=""とする
        │
        ├─ファイルオブジェクトから辞書ライターを作ってwriterに入れる
        │      └─ただし、ヘッダー行は "名前" 、 "年齢" 、"住所"とする
        │
        ├─writerでヘッダ行を出力する
        └─writerで、辞書dict_data を一括出力する

リスト16-01

クラス:Person
│
├─目的:個人を表すクラス
├─属性
│    ├─名前:name: str
│    └─年齢:age: int
│
├─特殊メソッド
│    │
│    └─コンストラクタ
│
└─メソッド:birth_year
      │
      ├─目的:生年を返す
      ├─引数:なし
      ├─戻り値
      │  └─生年 -> int
      │ 
      └─処理
          ├─今日の日付をtoday に入れる
          └─今日(today )の年の値から年齢(age )を引いた値を返す

クラスの使用例
  │
  ├─インスタンスを作る
  │      ├─属性値("田中", 15)でPersonのインスタンスを作ってperson1 に入れる
  │      └─属性値("鈴木", 25)でPersonのインスタンスを作ってperson2 に入れる
  │
  ├─person1 の名前、年齢、生年を並べて表示する
  └─person2 の名前、年齢、生年を並べて表示する

リスト16-05

  クラス:User
    │
    ├─目的:ユーザーを表すクラス
    ├─属性
    │    └─ユーザー名:name: str
    │
    ├─クラス変数  ※  
    │    └─インスタンスの作成数:count: int = 0
    │
    └─コンストラクタ   ※  
          ├─目的:作成したインスタンスの個数をカウントする
          ├─引数
          │    └─ユーザー名:name: str   ※  
          └─処理
                ├─属性nameに引数nameを代入する   ※  
                └─作成済みインスタンスの数を記録するcount の値を1 増やす   ※  

  クラス変数の使用例
    │
    ├─Userクラスのクラス変数count をコンソールに表示する
    │
    ├─2 つのUserインスタンスを作る
    │        ├─user1 ←User("田中")
    │        └─user2 ←User("鈴木")
    │
    └─Userクラスのクラス変数count をコンソールに表示する

リスト16-07

    クラス:Member
    │
    ├─目的:個人を表すクラス
    ├─属性
    │    ├─番号:uid: int
    │    ├─名前:name: str
    │    └─年齢:age: int
    │
    └─特殊メソッド
          │
          ├─コンストラクタ
          ├─表示メソッド
          └─等値メソッド←uid

リスト16-09

    クラス:Member
    │
    ├─目的:個人を表すクラス
    ├─属性
    │    ├─番号:uid: int
    │    ├─名前:name: str
    │    └─年齢:age: int
    │
    └─特殊メソッド
          │
          ├─コンストラクタ
          ├─表示メソッド       
          └─等値メソッド←uid 

    特殊メソッドの利用例
    │
    ├─Memberクラスのインスタンスmember1 を作る
    │    └─member1 = Member(100,  "田中宏", 18)
    │
    ├─member1 をコンソールに表示する
    │    └─print(member1)           ※   
    │
    ├─member1 をrepr()を使って表示する
    │    └─print(repr(member1))    ※  
    │
    └─member2 を作ってmember1 と比較する
          ├─member2 = Member(200,"鈴木隆", 20)
          │
          └─◇─member2 == member1 である   ※  
              │    └─"同じインスタンスです" と表示する
              └─else
                    └─"同じインスタンスではありません" と表示する

リスト16-11

 データクラス: Person    ※   
 │
 ├─目的:個人を表すクラス
 └─属性
       ├─名前:name: str
       └─年齢:age: int

リスト17-01

  クラス:Member
  │
  ├─目的:会員を表すクラス
  │
  ├─クラス変数
  │      └─FEE: int = 5000    ※基本会費額
  ├─属性
  │    ├─会員番号:uid: int
  │    └─会員名:name: str
  │
  ├─特殊メソッド
  │    └─コンストラクタ
  │
  └─メソッド:membership_fee
        ├─目的:会費額を返す
        ├─引数:なし
        ├─戻り値
        │    └─会費額 → int
        └─処理
              └─FEE を返す

リスト17-02

  クラス:Member
  │
  ├─目的:会員を表すクラス
  │
  ├─クラス変数
  │      └─FEE: int = 5000    ※基本会費額
  ├─属性
  │    ├─会員番号:uid: int
  │    └─会員名:name: str
  │
  ├─特殊メソッド
  │    └─コンストラクタ
  │
  └─メソッド:membership_fee
        ├─目的:会費額を返す
        ├─引数:なし
        ├─戻り値
        │    └─会費額 → int
        └─処理
              └─FEE を返す 

  クラス:GeneralMember(Member)   ※   Member を継承するという指定
  │
  ├─目的:一般会員を表すクラス
  │
  ├─属性
  │    └─レッスンメニュー:lesson_menu: list[str]
  │
  └─特殊メソッド
        └─コンストラクタ

リスト17-04

  継承の確認
  │
  ├─members.pyからGeneralMemberクラスをインポートする   ※   
  │
  ├─サブクラスのインスタンスを作る
  │    └─gm = GeneralMember(1001, "田中花子", [ "ヨガ", "ピラティス"])
  │
  ├─スーパークラスのデータ属性とメソッドにアクセスする  
  │    ├─会員番号(uid )を表示する
  │    ├─会員名(name)を表示する
  │    └─会費額(membership_fee())を表示する
  │
  └─自クラスのデータ属性にアクセスする
        └─レッスンメニュー(lesson_menu )を表示する

リスト17-06

  クラス:SeniorMember(Member)      ※ Memberクラスを継承するという指定
  │
  ├─目的:シニア会員を表すクラス
  ├─属性:なし
  │
  └─メソッド:membership_fee     ※ オーバーライドメソッド
        │
        ├─目的:会費額を返す
        ├─引数:なし
        ├─戻り値
        │    └─会費額 → int
        └─処理
              └─FEE * 0.6 を整数に丸めて返す

リスト17-09

  オーバーライドの検証
  │
  ├─members.pyからSeniorMemberクラスをインポートする  
  │
  ├─サブクラスのインスタンスを作る
  │    └─senior_member = SeniorMember(2001,  "佐藤一郎")  
  │
  └─データ属性とメソッドを使用する
        ├─会員番号(uid )を表示する
        ├─会員名(name)を表示する
        └─会費額(membership_fee())を表示する   

リスト17-11

  クラス:JsonMixin
  │
  ├─目的:データ属性をJSONへ変換するミックスインクラス
  │
  └─メソッド:to_json
        ├─目的:インスタンスのデータ属性をJSONデータに変換して返す
        ├─引数:なし
        ├─戻り値
        │    └─JSON文字列 → str
        └─処理
              │  ※インスタンスはデータ属性名:値の辞書を特殊属性__dict__に持っている
              │  ※それをjson.dumps()でJSON形式に変換する
              │
              └─json.dumps()でインスタンスの辞書をJSON形式の文字列に変換して返す
                    └─日本語を文字コードではなくそのまま表示するオプションを指定する

リスト17-13

クラス:GeneralMember(JsonMixin, Member) 
  │
  ├─目的:一般会員を表すクラス
  ├─属性
  │    └─レッスンメニュー:lesson_menu: list[str]
  └─特殊メソッド
        └─コンストラクタ

リスト17-15

 ミックスインの検証
  │
  ├─members.pyからGeneralMember クラスをインポートする
  │
  ├─GeneralMemberクラスのインスタンスを作る
  │    └─gm = GeneralMember(1001, "田中花子", [ "ヨガ", "ピラティス"])
  │
  └─gmのデータ属性をJSON形式で表示する

リスト17-17

  ポリモーフィズムの例
  │
  ├─同じメソッドを持つサブクラスのインスタンスでリストを作る
  │    └─members = [
  │             GeneralMember(1001, "田中花子", [ "ヨガ", "ピラティス"]),
  │             SeniorMember(2001,  "佐藤一郎"),
  │             SeniorMember(2002,  "伊藤京子"),
  │             GeneralMember(1003, "高橋健太", [ "水泳", "筋力トレーニング"]),
  │             GeneralMember(1002, "鈴木美咲", [ "ダンス", "エアロビクス"]),
  │             SeniorMember(2003,  "山本次郎")
  │          ]
  │
  └─各要素の会員名と会費額を表示する
        └─↻─for:member ← members
            │
            └─memberの会員名と会費額を、 "〇〇の会費=〇円" の形式で表示する

リスト17-19

  クラス:Taro
  │
  └─メソッド:talk
        ├─目的:メッセージを表示する
        ├─引数:なし
        ├─戻り値:なし
        └─処理
              └─"こんにちは、太郎です" とコンソールに表示する

  クラス:Hanako
  │
  └─メソッド:talk
        ├─目的:メッセージを表示する
        ├─引数:なし
        ├─戻り値:なし
        └─処理
              └─"こんにちは、花子です" とコンソールに表示する

  クラス:Jiro
  │
  └─メソッド:talk
        ├─目的:メッセージを表示する
        ├─引数:なし
        ├─戻り値:なし
        └─処理
              └─"こんにちは、次郎です" とコンソールに表示する

  ポリモーフィックな処理
  │
  ├─各クラスのインスタンスのリストを作る
  │    └─person_list = [Taro(), Hanako(), Jiro()]
  │
  └─リストの要素でtalkメソッドを実行する
        └─↻─for:person← person_list
            │
            └─personのtalkメソッドを実行する