В настоящее время я работаю над симулятором BASIC в Python, как следует из названия. Вот мой код для этой проблемы:Как сохранить список номеров, которые я уже зарегистрировал?
def getBASIC():
l = []
x = 1
while x == 1:
i = input()
l.append(i)
if len(i.split()) != 3:
x = 0
return l
def findLine(prog, target):
for l in range(0, len(prog)):
progX = prog[l].split()
if progX[0] == target:
return l
def execute(prog):
location = 0
visited = [False] * len(prog)
while True:
T = prog[location].split()[2]
location = findLine(prog, T)
visited[location] = True
if visited[len(visited)-1] == False:
return "infinite loop"
else:
return "success"
Первая функция делает то, что он собирается делать - преобразовать ввод BASIC коды в список. Вторая функция findLine также выполняет то, что она намерена делать, поскольку она находит элемент, который содержит строку, равную входу. Тем не менее, последняя функция не может работать. Я знаю, что мне нужно сделать, и это проверить, посетила ли его часть дважды. Я не могу понять, как это сделать, из-за существования цикла while. В результате этого вторая половина этой функции является просто заполнителем. Если бы вы могли помочь мне разобраться, как это решить, было бы весьма полезно. Благодарю.
возможно дубликат [Python 3 - BASIC Simulator] (http://stackoverflow.com/questions/15832517/python-3-basic-simulator) –
Пожалуйста, используйте название, которое на самом деле отражает ваш вопрос. –
Две вещи: 1. В вашей петле поставьте условие для выхода, если вы достигнете последней строки. 2. Вместо использования 'while True', установите ограничение на количество шагов, которые может выполнить ваша программа (например:' for i in range (1000000) ') –