SPD一覧
簡単なプログラム
│
├─変数nameにキーボードから名前を入力する
└─nameを表示する
税額計算
│
├─価格を入力する─変数priceにキーボードから価格を入力する
├─税額を計算する─入力した値(price)を整数に変換し、それに0.1を掛けた値をtaxに代入する
└─税額(tax)を表示する
税額計算
│
├─価格を入力する
│ └─変数priceにキーボードからint型の値(価格)を入力する
├─税額を計算する
│ └─入力した値(price)に0.1を掛けた値をtaxに代入する
└─税額(tax)を表示する
書式付きの表示
│
├─変数msgに、キーボードから文字列を入力する
└─書式付き表示で、"入力した文字列は{msg}です" のようにmsgの値を表示する
式の埋め込み
│
├─変数varに、キーボードからint型の値を入力する
└─書式付き表示で、"入力値+20 = {var + 20}" のようにvarの値を表示する
書式付きの表示
│
├─変数nameに、キーボードから文字列を入力する
└─書式付き表示で、"こんにちは、〇〇さん" の形式でnameの値を表示する
式の計算と表示
│
├─変数aに、キーボードからfloatの値を入力する
├─変数xに、キーボードからfloatの値を入力する
├─ax + 3の値を計算して変数yに代入する(axはa×xの意味です)
└─書式付きの表示で、"答えは〇〇です"の形式でyの値を表示する
式の計算と表示
│
├─変数kokugo、sugaku、eigoに、それぞれ85, 93, 78を代入する(1つの代入文で書く)
├─文字列"国語"、"数学"、"英語"をタブ区切りで表示する(1つのprintでまとめて表示する)
└─変数kokugo、sugaku、eigoをタブ区切りで表示する(1つのprintでまとめて表示する)
表示回数を指定する
│
├─変数countにキーボードからintの値を代入する
└─count個の"#"をコンソールに表示する
対数(log)の計算
│
├─mathライブラリをインポートする(読み込む)
├─10の自然対数を計算して表示する
└─20の自然対数を計算して表示する
サイコロを振って出目を表示する
│
├─tkxlibライブラリからdice関数をインポートする(読み込む)
├─サイコロを振って(dice())、出目を変数numberに代入する
└─numberを表示する
代入演算子の働き
│
├─変数varに10を代入する
├─var+1を計算し、その値をvarに再代入する(varの値を1だけ増やす)
└─varを表示する
複合代入演算子の働き
│
├─変数varに10を代入する
├─varの値を1だけ増やす ※ 複合代入演算子を使う時の表現です
└─varを表示する
分配個数と余りの計算
│
├─
├─
└─"一人当たり〇個、余り〇個" の形式で、nとmodを表示する
Sin関数の値を計算する
│
├─
├─
├─
└─"sin〇 = 〇" の形式でdegとvalを表示する
サイコロゲーム
│
├─tkxlibからdice関数をインポートする
├─サイコロを振って(dice())、出目を変数numberに代入する
│
└─◇─numberは6である
│ └─「当たり」と表示する
│
└─else
└─「はずれ」と表示する
サイコロゲーム
│
├─tkxlibからdice関数をインポートする
├─サイコロを振って(dice())、出目を変数numberに代入する
└─結果を表示する─◇─numberは6である
│ └─「当たり」と表示する
└─else
└─「はずれ」と表示する
正の数か判定する
│
├─変数nにキーボードから整数を入力する
└─結果を表示する─◇─nは正の数である
│ └─"正の数です"と表示する
└─else
└─"正の数ではありません"と表示する
ログインできたかどうか判定する
│
├─変数passwordにキーボードから文字列でパスワードを入力する
└─結果を表示する─◇─passwordは"Python"である
│ └─"ログイン成功"と表示する
└─else
└─"パスワードが違います"と表示する
合格かどうか判定する
│
├─変数scoreにキーボードから整数で得点を入力する
└─結果を表示する─◇─scoreは60以上である
│ └─"合格"と表示する
└─else
└─"不合格"と表示する
暑いかどうか判定する
│
├─変数tempにキーボードから浮動小数点数で気温を入力する
└─結果を表示する─◇─tempは25度より高い
│ └─"暑いです"と表示する
└─else
└─"暑くありません"と表示する
営業時間かどうか判定する
│
├─変数timeにキーボードから時刻を入力する
└─結果を表示する─
料金区分を判定する(練習6-1-2B)
│
├─変数ageにキーボードから年齢を入力する
└─結果を表示する─
うるう年かどうか判定する
│
├─変数yearにキーボードから西暦年を入力する
└─結果を表示する
└─
ドルを円に換算する
│
├─変数rateにキーボードから1ドル当たりの円換算レートを整数で入力する
└─ドルを円に換算する
└─
サイコロの出目の判定
│
├─tkxlibからdice関数をインポートする
├─サイコロを振って(dice())、出目を変数numberに代入する
│
└─結果の表示─◇─numberは1
│ └─「出目は1」と表示する
◇─numberは2
│ └─「出目は2」と表示する
◇─numberは3
│ └─「出目は3」と表示する
└─else
└─「出目は1、2、3ではない」と表示する
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の値を並べて表示する
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の値を並べて表示する
平方根の計算
│
├─キーボードから、変数xに整数を入力する
├─◇─xは負の数
│ └─xに-1を掛けて正の数にする
└─xの平方根を計算して表示する
条件式の使い方
│
├─tkxlibからdice関数をインポートする
├─サイコロを振って(dice())、出目を変数numberに代入する
├─変数messageに、numberが6なら"当たり"、それ以外は"はずれ"を代入する
└─messageを表示する
信号の色から動作を指定する
│
├─変数colorにキーボードから信号の色を表す単語を文字列で代入する
│
└─色に応じた動作を表示する─
得点から評価を表示する
│
├─キーボードから得点を整数で変数scoreに代入する
│
└─得点に応じた評価を表示する─
曜日から予定を表示する
│
├─キーボードから曜日を文字列で変数dayに代入する ※ "月"、"火"など
│
└─曜日に応じた予定を表示する─
気温に適合する服装を表示する
│
├─キーボードから気温を浮動小数点数で変数tempに代入する
│
└─気温に応じた服装を表示する─
年齢ごとの料金を表示する
│
├─キーボードから年齢を整数で変数ageに代入する
│
└─年齢ごとの料金を表示する─
送料の表示
│
├─キーボードから、購入金額を整数で変数priceに入力する
├─変数shipping_feeに、priceが3000以上なら「無料」、それ以外は「500円」を代入する。
└─shipping_feeを表示する
リストのすべての要素を表示する
│
└─[21, 35, 16]のすべての要素を表示する─↻─for: num ← [21, 35, 16]
│
└─printでnumを表示する
リストのすべての要素を表示する
│
├─numbersに、リスト[21, 35, 16]を代入する
└─numbersのすべての要素を表示する ─↻─for: num ← numbers
│
└─printでnumを表示する
リストのすべての要素を表示する
│
├─numbersに、リスト[21, 35, 16]を代入する
└─numbersのすべての要素を表示する
└─↻─for: num ← numbers
│
└─printでnumを表示する
3 回繰り返す
│
└─↻─for: i ← range(3)
│
└─iと "Hello" をスペースで区切って表示する
リストの得点を評価する
│
├─変数scoresに得点のリスト[85, 92, 45, 78, 55, 95]を代入する
└─得点により合否を判定して表示する
└─↻─for: score ← scores
│
├─◇─score は60以上
│ │ └─変数grade に "合格" を入れる
│ └─else
│ └─変数grade に "不合格" を入れる
│
└─score とgrade をコロン( : )で区切って表示する
リストの得点を階級別に集計する
│
├─変数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)
1000円以上の価格だけを抜き出す
│
├─変数pricesに価格のリストを代入する
│ └─prices = [120, 1550, 980, 305, 1100, 280, 1360, 330, 880, 900, 1700]
│
└─1000円以上の価格だけを表示する
└─↻─for: price ← prices
│
└─◇─priceは1000円以上
└─priceを、改行せず半角空白で区切って表示する
体温のリストを範囲別に集計する
│
├─変数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 )
送料の総額を計算して表示する
│
├─重さのリストを変数weightsに代入する
│ └─weights = [1.5, 0.8, 3.5, 2.0, 6.2, 4.1, 0.7]
├─送料の総額を入れる変数total_amountにゼロを代入する
│
├─送料の総額を計算する
│ └─
│
│
│
│
│
│
│
│
│
│
└─"送料の総額"とtotal_amountをコロン(:)とスペースで区切って表示する
リストのデータの平方根を計算して表示する
│
├─変数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を、コロンとタブで区切って表示する
│
└─"=処理終了="と表示する
リストのデータの平方根を計算して表示する
│
├─変数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を、コロンとタブで区切って表示する
│
└─"=処理終了="と表示する
カゴに入れられる荷物の総重量を求める
│
├─荷物の重量のリストを変数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をコロン(:)とタブで区切って表示する
リンゴのサイズ別の個数を集計して表示する
│
├─リンゴの重さのリストを変数applesに代入する
│ └─apples = [320, 120, 520, 220, 250, 610, 350, 400, 280, 850, 510]
├─サイズ別の変数large, medium, smallにゼロを代入して初期化する
├─サイズ別に全要素の個数を集計する
│ └─
│
│
│
│
│
│
│
│
│
│
└─サイズ別の個数を表示する
└─large、medium、smallの変数名と値を各行に1つずつ、
コロン(:)と半角空白で区切って表示する(例 large: 3)
電卓プログラム
│
├─キーボード入力のためにtkxlibからget_int関数をインポートする
├─変数totalに0を代入して初期化する
│
├─キーボード入力の合計を計算する
│ └─↻─while: True
│ │
│ ├─valueにキーボードから整数を入力する
│ ├─◇─valueは0である
│ │ └─breakでループを脱出する
│ │
│ ├─valueを表示する
│ └─totalにvalueを加算する
│
├─区切り線("-----")を表示する
└─"合計:"とtotalを並べて表示する
最大値を求める
│
├─キーボード入力のためにtkxlibからget_int関数をインポートする
├─0を変数max_scoreに代入する
├─
│
│
│
│
│
└─最大値を表示する
偶数と奇数の個数を数える
│
├─キーボード入力のためにtkxlibからget_int関数をインポートする
├─0を変数even_countに代入する
├─0を変数odd_countに代入する
│
├─
│
│
│
│
│
│
│
│
│
│
├─"偶数=〇〇個"の形式でeven_countを表示する
└─"奇数=〇〇個"の形式でodd_countを表示する
テストの成績を集計する
│
├─tkxlibからget_int関数をインポートする
├─count(件数), total(合計), max_score(最高点)に0を代入する
├─min_score(最低点)に100を代入する
│
├─
│
│
│
│
│
│
│
│
│
│
│
│
│
│
└─◇─入力件数はゼロではない
├─平均を計算する─ average = round(total / count, 1)
└─件数、平均点、最高点、最低点を1行にならべて表示する
└─表示例 ─ 件数:10、平均点:72.0、最高点:98、最低点:65
入力した整数の合計を求める
│
├─tkxlibからget_int関数をインポートする
├─0を変数totalに代入する
│
├─↻─while: キーボードからvalueに整数を入力し、その値がゼロではない
│ ├─valueを表示する
│ └─total += value
│
├─区切り線("-----")を表示する
└─"合計:"とtotalを並べて表示する
入力した文字列をそのまま表示する
│
├─tkxlib からget_str 関数をインポートする
└─↻─while: True
│
├─キーボードからlineに文字列を入力する
├─◇─lineは空文字("")である
│ └─breakでループを脱出する
└─lineを表示する
リストの要素を取り出す
│
├─名前のリストnames を作る─names ← ["Tom", "Mary", "John", "Alice"]
│
└─リストnames から名前を取り出して表示する
└─↻─for:name ← names
│
└─name をコンソールに表示する
2次元リストから要素を取り出す
│
├─体重と身長のリストを要素とするリストdataを作る
│ └─[[65.5, 172.8], [50.8, 158.2], [75.7, 178.3]]
│
└─リストdataから要素を取り出して表示する
└─↻─for:person ← data
│
└─personをコンソールに表示する
2次元リストの要素からインデックスで値を取り出す
│
├─体重と身長のリストを要素とするリストdataを作る
│ └─[[65.5, 172.8], [50.8, 158.2], [75.7, 178.3]]
│
└─リストdataから要素を取り出して表示する
└─↻─for:person ← data
│
└─person[0] とperson[1] を並べてコンソールに表示する
2次元リストの要素からアンパックして変数に値を取り出す
│
├─体重と身長のリストを要素とするリストdataを作る
│ └─[[65.5, 172.8], [50.8, 158.2], [75.7, 178.3]]
│
└─リストdataから要素を取り出して表示する
└─↻─for:weight, height← data
│
└─weightとheightを並べてコンソールに表示する
成績の最大値、最小値、平均値を求める
│
├─変数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を表示する
成績を昇順に並べ替えて表示する
│
├─変数scoresに[55, 75, 58, 66, 81, 72, 95, 68, 71, 85]を代入する
├─scoresを昇順に並べ替えて変数sorted_scoresに代入する
└─sorted_scoresを表示する
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 を表示する
リストの要素を集計する
│
├─変数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を表示する
リスト内包表記
│
├─変数numbersに[3, 2, 5]を代入する
├─リスト内包表記で新しいリストnew_numbersを作成する
│ ├─for: x ← numbers
│ └─変換: x * 2
└─new_numbersを表示する
リスト内包表記
│
├─変数numbersに[2, 7, 8, 5, 6]を代入する
├─リスト内包表記で新しいリストnew_numbersを作成する
│ ├─for: x ← numbers
│ ├─変換: x * 2
│ └─条件: x % 2 == 0
└─new_numbersを表示する
2次元リストを扱うリスト内包表記
│
├─変数dataに[[65.5, 172.8],[50.8, 158.2],[75.7, 178.3]]を代入する
├─リスト内包表記で新しいリストbmiを作成する
│ ├─for: weight, height ← data
│ └─変換: weight / (height / 100) ** 2
└─bmiを表示する
平方根を求めるリスト内包表記
│
├─変数numbersに[3,2,5]を代入する
├─
│
│
└─resultを表示する
条件付きリスト内包表記
│
├─変数numbersに[15,22,31,18,45,27,36]を代入する
├─
│
│
│
└─resultを表示する
2次元リストを扱うリスト内包表記
│
├─変数dataに[[100,80],[85,95],[70,60]]を代入する
├─
│
│
└─averagesを表示する
インデックスと要素を表示する
│
├─animals に["dog", "cat","rabbit"] を代入する
└─↻─for: i, animal ← enumerate(animals)
│
└─iとanimalを並べて表示する
2つのリストの要素をまとめて表示する
│
├─2つのリストを作成する:
│ ├─names = ["田中","佐藤", "山田"]
│ └─heights = [175.3, 163.5, 182.1]
│
└─↻─for: name, height ← zip(names, heights)
│
└─nameとheightを並べて表示する
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を表示する
果物の番号と名前を表示する
│
├─fruitsに["apple", "banana", "orange", "grape"]を代入する
└─
都市名と人口を表示する
│
├─2つのリストを作成する:
│ ├─cities = ["東京", "大阪", "名古屋"]
│ └─populations = [1396, 275, 233]
│
└─
在庫情報のリストを生成する
│
├─3つのリストを作成する:
│ ├─products = ["ノートPC", "タブレット", "スマホ"]
│ ├─prices = [120000, 80000, 95000]
│ └─stocks = [15, 23, 42]
│
├─
│
│
└─inventoryを表示する
キーがあるか調べてから値を取得する
│
├─本を表す辞書を作る
│ └─book ← {"title": "坊ちゃん", "author": "夏目漱石", "stock": 10}
│
└─◇─辞書に"price" というキーがある
│ └─book["price"] をコンソールに表示する
└─else
└─" キー'price'がない" と表示する
辞書の基本操作
│
├─辞書を作って変数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を表示する
辞書のすべてのキーと値を表示する
│
├─成績を表す辞書を作る
│ └─score = {"id": 1201, "English": 90, "Math": 85, "Language": 92}
│
└─辞書scoreのすべてのキーと値を表示する
└─↻─for: key ← score
│
└─キーと値をコロン(:)で区切って表示する
辞書のキーと値を順に表示する
│
├─成績を表す辞書を作る
│ └─score = {"id": 1201, "English": 90, "Math": 85, "Language": 92}
│
└─辞書scoreのすべてのキーと値を表示する
└─↻─for: key, value ← score.items()
│
└─print: キーと値をコロン(:)で区切って表示する
商品辞書のすべてのキーと値を表示する
│
├─商品を表す辞書を作成する
│ └─product = {"商品名": "ボールペン", "価格": 180, "在庫": 25, "色": "黒"}
│
└─全要素を表示する ─
ユーザーの検索
│
├─ユーザーのリストを作成する:
│ └─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でループを抜ける
検索用の辞書を作成する
│
├─ユーザーのリストを作成する:
│ └─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"]を並べて表示する
簡単な辞書内包表記の例
│
├─リストを作成する─ numbers = [1, 2, 3]
│
├─辞書内包表記で、numbersからsquare_mapを作る
│ ├─for: n ← numbers
│ └─変換
│ ├─キー: n
│ └─値: n ** 2
│
└─square_mapの内容を表示する
検索用の辞書を作成する
│
├─ユーザーのリストを作成する:
│ └─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"]を並べて表示する
辞書のリストのソート
│
├─ユーザー辞書のリストを作成する
│ └─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 で表示する
検索用辞書の作成
│
├─商品辞書のリストを作成する
│ └─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を並べて表示する
学生辞書のリストをソートする
│
├─学生辞書のリストを作成する
│ └─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)
関数:print_message
│
├─目的:メッセージを表示する
├─引数:なし
├─戻り値:なし
│
└─処理
└─" こんにちは" を表示する
関数呼び出しの例
│
└─print_message 関数を実行する
関数: print_message
│
├─目的:メッセージを表示する
├─引数
│ └─name: メッセージに表示する名前
├─戻り値:なし
└─処理
└─"こんにちは{name}さん"を表示する
関数の使用例
│
└─引数に"太郎"を指定して、print_message関数を呼び出す
└─print_message("太郎")
関数: function
│
├─目的:式の値を計算する
├─引数
│ └─x: 計算する値
├─戻り値:計算結果の式の値
└─処理
└─x**2 + x + 1の値を計算して返す
関数の使用例
│
└─function(10)を実行して、戻り値をコンソールに表示する
関数: score
│
├─目的:3科目のテストの合計と平均を計算する
├─引数
│ ├─math: 数学のテストの点数
│ ├─science: 理科のテストの点数
│ └─english: 英語のテストの点数
│
├─戻り値:合計と平均のタプル
│
└─処理
├─合計を計算して変数totalに代入する
├─平均を計算して小数点以下1桁までに丸めて、変数averageに代入する
└─totalとaverageをタプルにして返す
関数の使用例
│
├─score(80, 70, 60)を実行して、戻り値を変数totalとaverageに代入する
└─合計(total)と平均(average)を、"合計=〇〇、平均=〇〇.〇"の形式で表示する
関数: calc_price
│
├─目的:税込みの価格を計算する
├─引数
│ ├─price: 商品の税抜き価格
│ └─tax_rate = 0.1: 税率
├─戻り値:税込みの価格
└─処理
└─税込みの価格を計算し、整数にして返す
└─return int(price * (1 + tax_rate))
関数の使用例
│
├─"価格=〇〇"の形式でcalc_price(1000)の戻り値を表示する
└─"価格=〇〇"の形式でcalc_price(1000, 0.08)の戻り値を表示する
関数: estimate_reading_time
│
├─目的:読み終わるのにかかる日数を見積もる
├─引数
│ ├─
│ └─
│
├─戻り値:読み終わるまでの日数(日)
│
└─処理
├─
│
└─端数を切り上げて、読み終わるまでの日数を整数にして返す
└─return math.ceil(days)
関数の使用例
│
├─
│
└─変数daysの値を"読み終わるまでの日数=〇〇日"の形式で表示する
関数: format_title
│
├─目的:タイトルの前後に記号を付ける
├─引数
│ ├─
│ └─
│
├─戻り値:記号を付けたタイトルの文字列
│
└─処理
└─
関数の使用例
│
├─タイトル"吾輩は猫である"を装飾する
│ └─
└─装飾したタイトルを表示する
└─print(title)
関数: 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の値を"新しい座標=〇〇"の形式で表示する(タプルをそのまま表示)
テキストファイルの一括入力
│
├─file_path に"sample.txt"のPathオブジェクトを作って代入する
│
├─file_pathを使って、dataにファイル内容を一括入力する
│ └─ただしファイルのエンコーディングはUTF-8 とする
└─dataを表示する
テキストファイルを1行ずつ入力する
│
├─file_path に"sample.txt"のPathオブジェクトを作って代入する
└─with文で処理する
├─file_path を入力モード("r" )で開いてファイルオブジェクトf を作る
│ └─ただし、ファイルエンコーディングはUTF-8とする
│
└─1行ずつ入力して表示する─↻─for:line← f
│
└─改行コードを付けないでlineを表示する
テキストを1行ずつ出力する
│
├─file_path に"sample2.txt"のPathオブジェクトを作って代入する
│
└─with文で処理する
├─file_path を出力モード("w" )で開いてファイルオブジェクトf を作る
│ └─ファイルエンコーディングはUTF-8
│
├─文字列を出力する─f を使って、"1行目\n" を出力する
│
└─数値を出力する┬─num に123 を代入する
├─f を使って、"2行目:〇\n" の形式でnum を出力する
└─f を使って、文字列にしたnum を出力する
テキストファイルの一括出力
│
├─出力データを作る─data← "1行目の出力データ\n2行目の出力データ\n3行目の出力データ\n"
├─file_path に"sample2.txt"のPathオブジェクトを作って代入する
│
└─file_path を使って、dataを一括出力する
└─ただしファイルのエンコーディングはUTF-8 とする
リストを一括出力する
│
├─出力するリストを作る
│ └─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を一括出力する
テキストファイルの一括入力
│
├─file_path に"no_exist.txt"のPathオブジェクトを作って代入する
│
└─〇─try:
│ ├─file_path を使って、dataにファイル内容を一括入力する
│ │ └─ただしエンコーディングはUTF-8 とする
│ └─dataを表示する
│
〇─except FileNotFoundError as e:
└─"ファイルが見つかりません:\n" とe を表示する
テキストファイルの一括入力
│
├─file_path に"sample.txt"のPathオブジェクトを作って代入する
│
└─〇─try:
│ ├─file_path を使って、dataにファイル内容を一括入力する
│ │ └─ただしエンコーディングはUTF-8 とする
│ └─dataを表示する
│
〇─except(OSError, UnicodeDecodeError) as e:
└─"ファイル入力エラーです:\n" とe を表示する
テキストを一括出力する
│
├─file_path に"output.txt" のPathオブジェクトを作って代入する
│
├─出力データを作る─data←"apple\nbanana\ncherry\n"
└─〇─try:
│ └─file_path を使って、dataを一括出力する
│ └─ただしファイルエンコーディングはUTF-8 とする
│
〇─except (OSError, UnicodeEncodeError) as e:
└─"ファイル出力エラーです:\n" とe を表示する
関数: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 を表示する
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]を並べて表示する
リストをCSV として書き込む
│
├─リストdataを作る── data = [
│ ["名前", "年齢", "住所"],
│ ["田中","30","東京"],
│ ["佐藤","25","大阪"],
│ ["鈴木","28","福岡"] ]
│
├─出力ファイル(data.csv)のパスを作ってfile_path に代入する
└─with文で処理する
├─file_pathを開いてファイルオブジェクトf を作る
│ └─ただし、出力モード("w" )、エンコーディングはUTF-8 、newline=""とする
│
├─ファイルオブジェクトf からCSV のライターを作ってwriterに入れる
└─writerで、dataを一括出力する
CSVを辞書として読み出す
│
├─入力ファイル(data.csv)のパスを作って、file_path に入れる
└─with文で処理する
├─file_path を開いてファイルオブジェクトf を作る
│ └─ただし、入力モード("r" )、ファイルエンコードはUTF-8 、newline=""とする
│
├─ファイルオブジェクトfから辞書リーダーを作ってdict_readerに入れる
└─↻─for:row ← dict_reader
│
└─row 、 "->" 、row["名前"]、row["年齢"]、row["住所"]を並べて表示する
辞書をCSV として書き込む
│
├─辞書を作る─dict_data =
│ [ {"名前": "田中", "年齢":"30", "住所": "東京"},
│ {"名前": "佐藤", "年齢":"25", "住所":" 大阪"},
│ {"名前": "鈴木", "年齢":"28", "住所": "福岡"} ]
│
├─出力ファイル(data.csv)のパスを作ってfile_path に入れる
└─with文で処理する
├─file_path を開いてファイルオブジェクトf を作る
│ └─ただし、出力モード("w" )、エンコーディングはUTF-8 、newline=""とする
│
├─ファイルオブジェクトから辞書ライターを作ってwriterに入れる
│ └─ただし、ヘッダー行は "名前" 、 "年齢" 、"住所"とする
│
├─writerでヘッダ行を出力する
└─writerで、辞書dict_data を一括出力する
クラス:Person
│
├─目的:個人を表すクラス
├─属性
│ ├─名前:name: str
│ └─年齢:age: int
│
├─特殊メソッド
│ │
│ └─コンストラクタ
│
└─メソッド:birth_year
│
├─目的:生年を返す
├─引数:なし
├─戻り値
│ └─生年 -> int
│
└─処理
├─今日の日付をtoday に入れる
└─今日(today )の年の値から年齢(age )を引いた値を返す
クラスの使用例
│
├─インスタンスを作る
│ ├─属性値("田中", 15)でPersonのインスタンスを作ってperson1 に入れる
│ └─属性値("鈴木", 25)でPersonのインスタンスを作ってperson2 に入れる
│
├─person1 の名前、年齢、生年を並べて表示する
└─person2 の名前、年齢、生年を並べて表示する
クラス:User
│
├─目的:ユーザーを表すクラス
├─属性
│ └─ユーザー名:name: str
│
├─クラス変数 ※
│ └─インスタンスの作成数:count: int = 0
│
└─コンストラクタ ※
├─目的:作成したインスタンスの個数をカウントする
├─引数
│ └─ユーザー名:name: str ※
└─処理
├─属性nameに引数nameを代入する ※
└─作成済みインスタンスの数を記録するcount の値を1 増やす ※
クラス変数の使用例
│
├─Userクラスのクラス変数count をコンソールに表示する
│
├─2 つのUserインスタンスを作る
│ ├─user1 ←User("田中")
│ └─user2 ←User("鈴木")
│
└─Userクラスのクラス変数count をコンソールに表示する
クラス:Member
│
├─目的:個人を表すクラス
├─属性
│ ├─番号:uid: int
│ ├─名前:name: str
│ └─年齢:age: int
│
└─特殊メソッド
│
├─コンストラクタ
├─表示メソッド
└─等値メソッド←uid
クラス: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
└─"同じインスタンスではありません" と表示する
データクラス: Person ※
│
├─目的:個人を表すクラス
└─属性
├─名前:name: str
└─年齢:age: int
クラス:Member
│
├─目的:会員を表すクラス
│
├─クラス変数
│ └─FEE: int = 5000 ※基本会費額
├─属性
│ ├─会員番号:uid: int
│ └─会員名:name: str
│
├─特殊メソッド
│ └─コンストラクタ
│
└─メソッド:membership_fee
├─目的:会費額を返す
├─引数:なし
├─戻り値
│ └─会費額 → int
└─処理
└─FEE を返す
クラス:Member
│
├─目的:会員を表すクラス
│
├─クラス変数
│ └─FEE: int = 5000 ※基本会費額
├─属性
│ ├─会員番号:uid: int
│ └─会員名:name: str
│
├─特殊メソッド
│ └─コンストラクタ
│
└─メソッド:membership_fee
├─目的:会費額を返す
├─引数:なし
├─戻り値
│ └─会費額 → int
└─処理
└─FEE を返す
クラス:GeneralMember(Member) ※ Member を継承するという指定
│
├─目的:一般会員を表すクラス
│
├─属性
│ └─レッスンメニュー:lesson_menu: list[str]
│
└─特殊メソッド
└─コンストラクタ
継承の確認
│
├─members.pyからGeneralMemberクラスをインポートする ※
│
├─サブクラスのインスタンスを作る
│ └─gm = GeneralMember(1001, "田中花子", [ "ヨガ", "ピラティス"])
│
├─スーパークラスのデータ属性とメソッドにアクセスする
│ ├─会員番号(uid )を表示する
│ ├─会員名(name)を表示する
│ └─会費額(membership_fee())を表示する
│
└─自クラスのデータ属性にアクセスする
└─レッスンメニュー(lesson_menu )を表示する
クラス:SeniorMember(Member) ※ Memberクラスを継承するという指定
│
├─目的:シニア会員を表すクラス
├─属性:なし
│
└─メソッド:membership_fee ※ オーバーライドメソッド
│
├─目的:会費額を返す
├─引数:なし
├─戻り値
│ └─会費額 → int
└─処理
└─FEE * 0.6 を整数に丸めて返す
オーバーライドの検証
│
├─members.pyからSeniorMemberクラスをインポートする
│
├─サブクラスのインスタンスを作る
│ └─senior_member = SeniorMember(2001, "佐藤一郎")
│
└─データ属性とメソッドを使用する
├─会員番号(uid )を表示する
├─会員名(name)を表示する
└─会費額(membership_fee())を表示する
クラス:JsonMixin
│
├─目的:データ属性をJSONへ変換するミックスインクラス
│
└─メソッド:to_json
├─目的:インスタンスのデータ属性をJSONデータに変換して返す
├─引数:なし
├─戻り値
│ └─JSON文字列 → str
└─処理
│ ※インスタンスはデータ属性名:値の辞書を特殊属性__dict__に持っている
│ ※それをjson.dumps()でJSON形式に変換する
│
└─json.dumps()でインスタンスの辞書をJSON形式の文字列に変換して返す
└─日本語を文字コードではなくそのまま表示するオプションを指定する
クラス:GeneralMember(JsonMixin, Member)
│
├─目的:一般会員を表すクラス
├─属性
│ └─レッスンメニュー:lesson_menu: list[str]
└─特殊メソッド
└─コンストラクタ
ミックスインの検証
│
├─members.pyからGeneralMember クラスをインポートする
│
├─GeneralMemberクラスのインスタンスを作る
│ └─gm = GeneralMember(1001, "田中花子", [ "ヨガ", "ピラティス"])
│
└─gmのデータ属性をJSON形式で表示する
ポリモーフィズムの例
│
├─同じメソッドを持つサブクラスのインスタンスでリストを作る
│ └─members = [
│ GeneralMember(1001, "田中花子", [ "ヨガ", "ピラティス"]),
│ SeniorMember(2001, "佐藤一郎"),
│ SeniorMember(2002, "伊藤京子"),
│ GeneralMember(1003, "高橋健太", [ "水泳", "筋力トレーニング"]),
│ GeneralMember(1002, "鈴木美咲", [ "ダンス", "エアロビクス"]),
│ SeniorMember(2003, "山本次郎")
│ ]
│
└─各要素の会員名と会費額を表示する
└─↻─for:member ← members
│
└─memberの会員名と会費額を、 "〇〇の会費=〇円" の形式で表示する
クラス:Taro
│
└─メソッド:talk
├─目的:メッセージを表示する
├─引数:なし
├─戻り値:なし
└─処理
└─"こんにちは、太郎です" とコンソールに表示する
クラス:Hanako
│
└─メソッド:talk
├─目的:メッセージを表示する
├─引数:なし
├─戻り値:なし
└─処理
└─"こんにちは、花子です" とコンソールに表示する
クラス:Jiro
│
└─メソッド:talk
├─目的:メッセージを表示する
├─引数:なし
├─戻り値:なし
└─処理
└─"こんにちは、次郎です" とコンソールに表示する
ポリモーフィックな処理
│
├─各クラスのインスタンスのリストを作る
│ └─person_list = [Taro(), Hanako(), Jiro()]
│
└─リストの要素でtalkメソッドを実行する
└─↻─for:person← person_list
│
└─personのtalkメソッドを実行する