python - 为什么我的解析器在作业应该结束时不断循环打印语句?
问题描述
我正在制作一种简单的编程语言 WMC,并且正在制作一个“END()”命令,但是每当我在使用“Display”命令时使用它时,它只会显示命令的名称
if Command[P] == "Display" and Running == "":
Running = "Display"
elif Running == "Display":
print(Command[P])
elif Command[P] == "END()":
if Running != "":
Running = ""
同时我不知道为什么。
我尝试移动 if 语句所在的位置,但没有运气,虽然对 python 并不陌生,但我对数组并不陌生,并且在所说的“数组”中创建命令。这是我的源代码:
Loop = 1
Command = []
P = -1
Running = ""
while Loop == 1:
P += 1
In = input()
if In == " ":
continue
else:
Command.append(In)
if Command[P] == "Display" and Running == "":
Running = "Display"
elif Running == "Display":
print(Command[P])
elif Command[P] == "END()":
if Running != "":
Running = ""
elif Running == "":
print("CLOSING...")
exit()
我希望'END()'命令将我带出显示循环,但它只显示“END()”并继续进行,好像什么都没做,我做错了什么?
解决方案
如果您输入“显示”,则运行被分配给“显示”。没有办法将 Running 分配给其他任何东西,此后您输入的所有命令都将简单地打印,原因是:
elif Running == "Display":
print(Command[P])
推荐阅读
- html - 如何在组件选择器上添加禁用属性?
- java - 尝试在 Ubuntu 上运行 jshell 时,当前未安装程序“jshell”
- c++ - C++ 将 unsigned char 数组转换为字符串表示形式的 long(或 long long)
- reactjs - React DirectLine 聊天不起作用。找不到源文件
- hazelcast - Hazelcast Mancenter 启用/禁用快照
- spring - 为什么应用程序/json获取请求上的Spring解码+(加号)?我该怎么办?
- c# - 带有 API 密钥的广告系列监控帖子
- android - 为什么我的字段在注入后是“空”?如何注入我的对象?
- unix - 如何替换文本文件中每出现一次的单词
- android - Android @SuppressWarnings 在语句级别,而不是方法级别