【发布时间】:2022-10-15 22:58:33
【问题描述】:
我正在尝试编写一个程序(我确信以前已经做过,只是想挑战自己),每个循环需要两个用户输入,一个用于字母/数字,一个用于检查用户是否完成输入( y/n),然后打印整个字符串。我知道到目前为止我所拥有的并不好,但基本上我开始循环,将指针向上移动两个(所以开头有一个可找到的 0 值),询问第一个和第二个输入,将下一个值设置为小写n,目前正在尝试弄清楚如何比较这些值。我试图打印值,这些值似乎只在两次输入后才打印,然后程序中断。
这是我到目前为止所拥有的:
+[>>[>].,>,>>++++++++++[<+++++++++++>-]<.[->-[>]<<].<[<]<-]
如果它有所作为,我正在使用自制的brainfuck解释器,它可能有一些缺陷:
def brainfuck(code):
array = [0]
pointer = 0
i = 0
while(i < len(code)):
if(code[i] == '<'):
if(i != 0):
if(pointer != 0):
pointer -= 1
elif(code[i] == '>'):
pointer += 1
if(len(array) <= pointer):
array.append(0)
elif(code[i] == '+'):
array[pointer] += 1
elif(code[i] == '-'):
if(array[pointer] > 0):
array[pointer] -= 1
elif(code[i] == '.'):
print(pointer,chr(array[pointer]))
elif(code[i] == ','):
x = input('Input:')
try:
array[pointer] = int(x)
except ValueError:
array[pointer] = ord(x)
elif(code[i] == '['):
if(array[pointer] == 0):
openBraces = 1
while(openBraces > 0):
i += 1
if(code[i] == '['):
openBraces += 1
elif(code[i] == ']'):
openBraces -= 1
elif(code[i] == ']'):
openBraces = 1
while(openBraces > 0):
i -= 1
if(code[i] == '['):
openBraces -= 1
elif(code[i] == ']'):
openBraces += 1
i -= 1
i += 1
【问题讨论】: