gpt4 book ai didi

python - SublimeREPL 返回无用的错误,在 IDLE 中起作用

转载 作者:行者123 更新时间:2023-11-28 18:45:58 24 4
gpt4 key购买 nike

我正在使用 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 > 文件中选择工具 > 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 设置。我试过重新安装我的 Python 安装。任何帮助表示赞赏。

最佳答案

您的程序中缺少一些关键的东西 - 一种运行它的方法。传统上,它在文件末尾包含以下内容:

if __name__ == '__main__':
main()

例如,与 C 程序不同,仅定义 main() 函数并不自动意味着它会在文件运行时执行 - 它需要显式调用。

将这些行添加到程序后,我就能够执行以下 Hello World 程序(来自维基百科):

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.

通过运行 Tools -> SublimeREPL -> Python -> Python - RUN Current File。如果您想与程序进行更多交互,首先确保您打开了 Python REPL,然后选择 Tools -> SublimeREPL -> Eval in REPL -> File。这会将 brainfuck()main() 函数加载到内存中,因此您可以根据需要多次运行它们。

关于python - SublimeREPL 返回无用的错误,在 IDLE 中起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20171709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com