我看似功能正常的BF解释程序不能运行标准的BF程序

2024-09-30 03:26:07 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的解释者的密码:

program=list(raw_input('Program: '))
array = [0 for i in range(100)]
pointer=0
prgpointer=0
run = True
while run:
    try:
        command = program[prgpointer]
        if command == '>':
            pointer += 1
        if command == '<':
            pointer -= 1
        if command == '+':
            array[pointer]=array[pointer]+1
        if command == '-':
            array[pointer]=array[pointer]-1
        if command == '.':
            print(array[pointer])
        if command == '[' and array[pointer]==0:
            while program[prgpointer]!=']':
                prgpointer+=1
        if command == ']' and array[pointer]!=0:
            while program[prgpointer]!='[':
                prgpointer-=1        
    except:
        run = False  
    prgpointer+=1

当我运行这个程序时:

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

我得到的结果是

-1
-3
4
4
7
0
-2
7
10
4
-4
1
1

此程序是任何其他bf解释程序中的功能性“hello world”程序。即使输出转换为ASCII,也不是“Hello World” 我的解说员有什么大问题可以指出吗? 命令是否正确?你知道吗


Tags: andrun程序密码inputrawifprogram
1条回答
网友
1楼 · 发布于 2024-09-30 03:26:07
  1. 要在数据指针处打印char值,您需要sys.stdout.write(chr(array[pointer])),否则您只需在列表中的所有数字之后打印数字。

  2. 语言规范说[]表示跳转到匹配的括号。您正在跳转到下一个/上一个括号。

相关问题 更多 >

    热门问题