私はプログラミングにはまったく触れられておらず、University of Waterlooの無料Pythonコースに取り組んでいます。私は現在Section 15Aに固執しています。そこで、私はBASICシミュレータを書く必要があります。私は「Smart Simulation」というタイトルのセクションで作業しています。ここでBASICプログラムを実行するコードを書いています。Python BASICシミュレータ
プログラムの正常終了または無限ループに入ったかどうかを確認する作業が必要です。ここでは、このセクションの私が持っている現在のコードは次のようになります。
def findLine(prog, target):
for x in range(0,len(prog)):
prog2 = prog[x].split()
start = prog2[0]
if len(prog2) > 2:
end = prog2[2]
if start == target:
return x
def execute(prog):
location = 0
visited = [False] * len(prog)
while True:
if location==len(prog)-1: return "success"
if visited[location] == True: return "infinite loop"
currentLine = prog[location]
currentLine = currentLine.split()
T = currentLine[2]
location = findLine(prog, T)
visited[location] = True
だから私は自分のPythonのビジュアライザを通じてこのコードを実行した、と私がいる問題は、それがsuccess
を返すべきであるとき、それはinfinite loop
を返すされていることです。彼らの自動化年生は、これまでのところ、以下の二つの入力で自分のコードをテストしました:それが、「無限ループ」の正しい答えになりますが、execute(['5 GOTO 30', '10 GOTO 20', '20 GOTO 10', '30 GOTO 40', '40 END'])
の第二の入力はまた、「無限ループ」を返している
execute(['10 GOTO 21', '21 GOTO 37', '37 GOTO 21', '40 END'])
「成功」を返します。
プログラムがループしているかどうかを判断するにはより良い方法があるかもしれませんが、私がコースを設定してくれたヒントに従っています。私は彼らが私に期待する方法で完了できるようにしたいと思いますに。私は真剣に誰もがこれを持っている可能性がある入力を感謝します!私はこれに固執して、しばらく試してみて、私はそれを動作させるために何をすべきか分かりませんので、私の髪を引っ張っています。提供されているお手伝いをありがとう! :)
あなたは 'while True:'を使っていると思います。 Python 3と2の場合、 'while not == len(prog)-1'を使用しなければならず、ループの終了後にprint( 'success')'または 'print" success "'を実行しなければなりません。私が間違っているか教えてください。 – MaxLunar