Python Brainf***–while循环上的bug

2024-09-29 23:30:10 发布

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

我是python的相对初学者,为了增强我的技能,我正在(尝试)编写一个Brainfu**语言的编译器。除了方括号[]循环外,其他都很好。我用来测试代码的程序是>++[>++<-]>+,它应该将单元格2设置为5。但是,当我运行此程序时,它会执行以下操作:

0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 0 >
1 [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 1 +
2 [0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 2 +
3 [0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 2 [
4 [0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 0 >
5 [0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 1 +
6 [0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 2 +
7 [0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 2 <
8 [0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 1 -
3 [0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 1 [
10 [0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 2 >
11 [0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 3 +
[0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

然后在迭代的点上对它进行格式化

我现在的代码是

^{pr2}$

posOfEnd试图找出下一个括号在哪里,posOfBegin正试图找出前一个括号在哪里。在


Tags: 代码程序语言编译器技能括号测试代码初学者
1条回答
网友
1楼 · 发布于 2024-09-29 23:30:10

我想问题是你的循环变量i,你在循环过程中修改了它:

i += posOfEnd+1

以及

^{pr2}$

但是Python ^ {CD2>}循环不同于它们的C/C++对应。在python中,变量i将被设置为您提供的iterable的每个元素,在本例中是rangerange(n)计算结果是一个包含从0n-1的所有数字的列表。如果您在迭代期间修改了循环变量,那么这个修改只对该迭代有效,但是对于下一次迭代,循环变量将被分配给iterable的下一个元素(不保留您的修改)。在

您可能需要使用while循环。在

相关问题 更多 >

    热门问题