我正在使用 Sublime Text 2、Package Control 和 SublimeREPL 来(尝试)创建和运行 python 代码。代码,一个简单的Brainfuck解释器,如下所示。然而,这不是问题:
import sys
def brainfuck(arg_bf_string):
bf_string = arg_bf_string
bf_string_pointer = 0
value_array = [0] * 65536
value_array_pointer = 0
running = True
while running:
if bf_string[bf_string_pointer] == ">":
value_array_pointer += 1
if bf_string[bf_string_pointer] == "<":
value_array_pointer -= 1
if bf_string[bf_string_pointer] == "+":
value_array[value_array_pointer] += 1
if bf_string[bf_string_pointer] == "-":
value_array[value_array_pointer] -= 1
if bf_string[bf_string_pointer] == ".":
sys.stdout.write(chr(value_array[value_array_pointer]))
if bf_string[bf_string_pointer] == ",":
value_array[value_array_pointer] = ord(raw_input("INP "))
if bf_string[bf_string_pointer] == "[":
if value_array[value_array_pointer] == 0:
loop_depth = 0
loop_pointer = bf_string_pointer + 1
loop_searching = True
while loop_searching:
if bf_string[loop_pointer] == "[":
loop_depth += 1
elif bf_string[loop_pointer] == "]" and loop_depth > 0:
loop_depth -= 1
elif bf_string[loop_pointer] == "]" and loop_depth == 0:
bf_string_pointer = loop_pointer
loop_searching = False
loop_pointer += 1
if bf_string[bf_string_pointer] == "]":
if value_array[value_array_pointer] != 0:
loop_depth = 0
loop_pointer = bf_string_pointer - 1
loop_searching = True
while loop_searching:
if bf_string[loop_pointer] == "]":
loop_depth += 1
elif bf_string[loop_pointer] == "[" and loop_depth > 0:
loop_depth -= 1
elif bf_string[loop_pointer] == "[" and loop_depth == 0:
bf_string_pointer = loop_pointer
loop_searching = False
loop_pointer -= 1
bf_string_pointer += 1
if bf_string_pointer > len(bf_string)-1:
running = False
def main():
brainfuck(raw_input("BF "))
我顺利地在 IDLE 中成功运行了这段代码,所以我确信代码本身不是问题。
但是,当使用 SublimeREPL 运行它时,我收到以下错误:
>>> Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32
^
我不知道那是从哪里来的。我可以通过简单地将文件加载到 Sublime Text 中并在 REPL > File 中选择 Tools > SublimeREPL > Eval 来复制它。
我也尝试过 Tools > SublimeREPL > Python > Python - RUN Current File。执行此操作时,我会在 REPL 选项卡中收到以下信息:
C:\Python27\python.EXE: can't open file '$file_basename': [Errno 2] No such file or directory
***Repl Closed***
我可以输入提示,但它完全没有响应。我猜我的 Python 安装有问题。我不知道该怎么办或如何解决它,或者我什至应该担心它。
据我所知,我已经正确安装了 SublimeREPL,使用包控制并将 SublimeREPL 设置从 Settings - Default 复制到 Settings - User。我已经尝试重新安装我的 Python 安装。任何帮助表示赞赏。