0

只是为了实验,我想看看我是否可以制作一个用户可以输入字符串的程序,然后可以将其作为 Python 代码执行。但是,我似乎无法让 if/while/for 语句正常工作。那么,有没有一种我想念的方法呢?

我的源代码:

prog = []

while True:
    varCommand = input(':')
    if varCommand == 'shell':
        code = ' '
        while code[len(code)-1] != 'end':
            code = [input('>>>>')]
            prog += code
        del prog[len(prog)-1]

    if varCommand == 'run':
        for i in range(len(prog)):
            exec(prog[i])

    if varCommand == 'view':
        for i in range(len(prog)):
            print('>>>>' + prog[i])

    if varCommand == 'delete':
        prog = []

例如,如果我尝试这样做:

for i in range(1,11):

由于 EOF 指向冒号,尝试使用上述程序运行它会导致运行时错误。有没有办法使这项工作?

4

1 回答 1

1

问题在这里:

if varCommand == 'run':
    for i in range(len(prog)):
        exec(prog[i])

使用此循环会导致程序运行用户一次输入一行的内容。所以第一个exec只看到for循环,不知道后面有什么。exec需要查看输入代码的全部内容。

您想要的是执行一次输入的所有内容,每个字符串由换行符分隔。将以上内容替换为:

if varCommand == 'run':
    exec('\n'.join(prog))

所以我现在可以做

:shell
>>>>for i in range(10):
>>>>    print(i)
>>>>
>>>>end
:run
0
1
2
3
4
5
6
7
8
9
于 2013-04-21T18:13:13.870 回答