出力サンプル -じゃんけんプログラム―

簡単なじゃんけんのプログラムを題材にしたフローチャート図です。

元のpythonソースコード

import random hands = {0: "グー", 1: "チョキ", 2: "パー"} decision = {0: "引き分け", 1: "負け", 2: "勝ち"} draw = 0 # 0:引き分け, 1:負け, 2:勝ち, 3:0~2以外の数字の時 count = 0 while draw == 0 or draw == 3: print("じゃんけん・・・") try: player = int(input("0=グー, 1=チョキ, 2=パー: ")) if 0 <= player <= 2: com = random.randint(0, 2) print("あなた:" + hands[player] + "\t" + "あいて:" + hands[com]) decision_value = (player - com + 3) % 3 print(decision[decision_value]) draw = decision_value if draw == 0: count += 1 if count == 5: print("※引き分け数が5回なので終了します。") break else: print("0~2の範囲で数字を入力してください") except ValueError: print("数値で入力してください")

本体験版より出力後の、自動生成されたマークダウンソースファイル(拡張ファイル形式「.md」)

###### 関数ブロック以外 ````mermaid %%{init:{'theme':'base','themeVariables':{ 'primaryColor':'white', 'primaryTextColor':'black', 'primaryBorderColor':'#000000', 'lineColor':'gray', 'textColor':'#6A7FABCC', 'fontSize':'15px'}}}%% %%{ init: { 'flowchart': { 'curve': 'basis' } } }%% graph TD; classDef default fill:#FFF4DD,stroke:#333,stroke-width:2px; classDef clrPattern1 fill:#FFFF00,stroke:#333,stroke-width:2px; classDef clrPattern2 fill:#FFC800,stroke:#333,stroke-width:2px; classDef clrPattern3 fill:#005060,stroke:#333,stroke-width:2px; classDef clrPattern4 fill:#FFFFFF,stroke:#333,stroke-width:2px; classDef clrPattern5 fill:#cde498,stroke:#333,stroke-width:2px; classDef clrPattern6 fill:#F0B0A0,stroke:#333,stroke-width:2px; classDef clrPattern7 fill:lightblue,stroke:#333,stroke-width:2px; linkStyle default stroke:gray,stroke-width:2px; %%データ項目 1["【処理】 3: hands = {0: ゛グー゛, 1: ゛チョキ゛, 2: ゛パー゛} "] 2["【処理】 4: decision = {0: ゛引き分け゛, 1: ゛ 負け゛, 2: ゛勝ち゛} "] 3["【処理】 6: draw = 0 # 0:引き分け, 1:負け, 2 :勝ち, 3:0~2以外の数字の時 "] 4["【処理】 7: count = 0"] 5[/" 【繰返文開始】 9: while draw == 0 or draw == 3: "\]:::clrPattern2 9["【出力】 10: print(゛じゃんけん・・・゛)"]:::clrPattern5 10["【処理】 11: try:"] 13["【処理】 12: player = int(input(゛0=グー, 1=チョキ, 2=パー: ゛)) "] 14{"13: 【条件文】"}:::clrPattern1 17["【処理】 14: com = random.randint(0, 2) "] 18["【出力】 15: print(゛あなた:゛ + hands[playe r] + ゛\t゛ + ゛あいて:゛ + hands[com ]) "]:::clrPattern5 19["【処理】 16: decision_value = (player - com + 3) % 3 "] 20["【出力】 17: print(decision[decision_va lue]) "]:::clrPattern5 21["【処理】 18: draw = decision_value"] 22{"19: 【条件文】"}:::clrPattern1 25["【処理】 20: count += 1"] 26{"21: 【条件文】"}:::clrPattern1 29["【出力】 22: print(゛※引き分け数が5回なので終了します。゛ ) "]:::clrPattern5 30["【break文】 23: break"] 31(("条件文 終了")) 32(("条件文 終了")) 34["【出力】 25: print(゛0~2の範囲で数字を入力してください゛ ) "]:::clrPattern5 35(("条件文 終了")) 36["【処理】 26: except ValueError:"] 37["【出力】 27: print(゛数値で入力してください゛)"]:::clrPattern5 38[\" 【繰返文終了】"/]:::clrPattern2 %%ルート設定 s([START])--> 1-->2 2-->3 3-->4 4-->5 5-->|ループ開始|9 9-->10 10-->13 13-->14 14-->|真(TRUE)|17 14-->|偽(FALSE)|34 17-->18 18-->19 19-->20 20-->21 21-->22 22-->|真(TRUE)|25 22-->|偽(FALSE)|32 25-->26 26-->|真(TRUE)|29 26-->|偽(FALSE)|31 29-->30 30-->38 31-->32 32-->35 34-->35 35-->36 36-->37 37-->38 38-->|ループ終了|e([end]) 38-->|ループ継続|5 style sg1 color:red,fill-opacity:0, stroke-opacity:0; subgraph sg1["if 0 <= player <= 2:"] 14 end style sg2 color:red,fill-opacity:0, stroke-opacity:0; subgraph sg2["if draw == 0:"] 22 end style sg3 color:red,fill-opacity:0, stroke-opacity:0; subgraph sg3["if count == 5:"] 26 end

本体験版より出力後のマークダウンファイルのデータをもとにつくられたフローチャート図です。
フローチャート図は「%%ルート設定」に書かれたデータ項目同士のつながりで表現してます。

関数ブロック以外
%%{init:{'theme':'base','themeVariables':{ 'primaryColor':'white', 'primaryTextColor':'black', 'primaryBorderColor':'#000000', 'lineColor':'gray', 'textColor':'#6A7FABCC', 'fontSize':'15px'}}}%% %%{ init: { 'flowchart': { 'curve': 'basis' } } }%% graph TD; classDef default fill:#FFF4DD,stroke:#333,stroke-width:2px; classDef clrPattern1 fill:#FFFF00,stroke:#333,stroke-width:2px; classDef clrPattern2 fill:#FFC800,stroke:#333,stroke-width:2px; classDef clrPattern3 fill:#005060,stroke:#333,stroke-width:2px; classDef clrPattern4 fill:#FFFFFF,stroke:#333,stroke-width:2px; classDef clrPattern5 fill:#cde498,stroke:#333,stroke-width:2px; classDef clrPattern6 fill:#F0B0A0,stroke:#333,stroke-width:2px; classDef clrPattern7 fill:lightblue,stroke:#333,stroke-width:2px; linkStyle default stroke:gray,stroke-width:2px; %%データ項目 1["【処理】 3: hands = {0: ゛グー゛, 1: ゛チョキ゛, 2: ゛パー゛} "] 2["【処理】 4: decision = {0: ゛引き分け゛, 1: ゛ 負け゛, 2: ゛勝ち゛} "] 3["【処理】 6: draw = 0 # 0:引き分け, 1:負け, 2 :勝ち, 3:0~2以外の数字の時 "] 4["【処理】 7: count = 0"] 5[/" 【繰返文開始】 9: while draw == 0 or draw == 3: "\]:::clrPattern2 9["【出力】 10: print(゛じゃんけん・・・゛)"]:::clrPattern5 10["【処理】 11: try:"] 13["【処理】 12: player = int(input(゛0=グー, 1=チョキ, 2=パー: ゛)) "] 14{"13: 【条件文】"}:::clrPattern1 17["【処理】 14: com = random.randint(0, 2) "] 18["【出力】 15: print(゛あなた:゛ + hands[playe r] + ゛\t゛ + ゛あいて:゛ + hands[com ]) "]:::clrPattern5 19["【処理】 16: decision_value = (player - com + 3) % 3 "] 20["【出力】 17: print(decision[decision_va lue]) "]:::clrPattern5 21["【処理】 18: draw = decision_value"] 22{"19: 【条件文】"}:::clrPattern1 25["【処理】 20: count += 1"] 26{"21: 【条件文】"}:::clrPattern1 29["【出力】 22: print(゛※引き分け数が5回なので終了します。゛ ) "]:::clrPattern5 30["【break文】 23: break"] 31(("条件文 終了")) 32(("条件文 終了")) 34["【出力】 25: print(゛0~2の範囲で数字を入力してください゛ ) "]:::clrPattern5 35(("条件文 終了")) 36["【処理】 26: except ValueError:"] 37["【出力】 27: print(゛数値で入力してください゛)"]:::clrPattern5 38[\" 【繰返文終了】"/]:::clrPattern2 %%ルート設定 s([START])--> 1-->2 2-->3 3-->4 4-->5 5-->|ループ開始|9 9-->10 10-->13 13-->14 14-->|真(TRUE)|17 14-->|偽(FALSE)|34 17-->18 18-->19 19-->20 20-->21 21-->22 22-->|真(TRUE)|25 22-->|偽(FALSE)|32 25-->26 26-->|真(TRUE)|29 26-->|偽(FALSE)|31 29-->30 30-->38 31-->32 32-->35 34-->35 35-->36 36-->37 37-->38 38-->|ループ終了|e([end]) 38-->|ループ継続|5 style sg1 color:red,fill-opacity:0, stroke-opacity:0; subgraph sg1["if 0 <= player <= 2:"] 14 end style sg2 color:red,fill-opacity:0, stroke-opacity:0; subgraph sg2["if draw == 0:"] 22 end style sg3 color:red,fill-opacity:0, stroke-opacity:0; subgraph sg3["if count == 5:"] 26 end