Python(IDLE)でプログラミング教材を作っています。while文やfor文を用いることなく、一言(一単語)の命令でループさせたいです。
発生している問題・エラーメッセージ
初等教育向けのプログラミング教材を開発しています。(専門高校高3)
受験の推薦入試でプレゼンで行うときに使います。
使用するCPUはRaspberry Piで言語はPythonです。
自分が製作した車型のロボットを簡単な命令コードで動作できるようにしたいです。
作りたい命令コードは以下の8つです。
FWD・・・前進 WAT・・・待機
BRK・・・後退 MRK(ⅹ)・・・ⅹは番号
LFT・・・左折 LMP(ⅹ)・・・MRK(x)へジャンプ
RGT・・・右折 SW(ⅹ)・・・MRK(x)へジャンプ
FWD,BRK,LFT,RGT,WATはGPIOによる出力をするプログラムをモジュールにして、
関数として呼び出せるのですが、MRK,JMPに関してはそう簡単にいきませんでした。
MRK,JMPは組み合わせることでループの役割をさせたいです。
そのため、
入力したプログラムを全て読み込む→MRKの行を記憶→JMPを検知→MRKにジャンプ
→JMP以下のプログラムを再実行
の流れで処理する必要がある。と、学校の教諭は言っていました。
以下に記すのが、入力したプログラム例です。
MRK(1) マーク1番を置く
FWD(1.0) 前進(1s)
LFT(1.0) 左折(1s)
JMP(x) マークの1番へジャンプ
以上のプログラムの実行結果としては
→前進(1s)→左折(s)→
↑ ↓
← ← ← ← ← ←
です。ループ制御をしたいのです。
しかし、Pythonでプログラムを途中(ここではMRKの後)から実行するやり方が分かりません。
エラーメッセージ
### 該当のソースコード ```Python ソースコード
試したこと
一度書き込んだプログラムを全て読み取りMRK、JMPと名づけた関数の文字列をfind()でみつける
↓
JMPの文字列を取得したらMRKまでジャンプし、MRK以下の命令をまた順番に実行する。事を試みた。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー