我在使用字典创建REPL时遇到问题

时间:2019-05-11 07:25:07

标签: python-3.x

问题:在python中构造一种名为Adder REPL的编程语言。

Adder语言只有几个简单的语句:

退出”以退出REPL或终止程序。

输入var ”提示并允许用户输入名为var的变量的值。

打印值”以打印值val。

var gets val ”变量var被赋值为val。

var添加val ”变量var已为其添加值val。

位置:

•var始终是仅包含字母的变量名;和

•val可以是:

仅包含字母的变量名;或

仅包含数字的自然数。

加法器REPL允许用户以交互方式输入命令。使用字典,此练习的问题更长。

提示:充分利用字符串方法。您可以通过定义函数将程序分成更小的部分吗?

到目前为止我的解决方案

我使用无限的while循环创建了一个简单的解决方案,但是我似乎无法为我的程序实现字典,任何想法或帮助将不胜感激。

def decor(func):
    def wrap():
        print("======================")
        func()
        print("======================")
    return wrap

@decor
def print_text():
    print("Welcome to Adder REPL.")
print_text()

def loop():
    while 1:
        x = input("??? ")
        if x == 'quit':
            print('Goodbye.')
            break

        try:
            y = eval(x)
            if y: print(y)
        except:
            try:
                exec(x)
            except Exception as e:
                print("Error:", e)
loop()

预期的输入/输出

Welcome to the Adder REPL.
??? a gets 1
??? input b
Enter a value for b: 2
??? c gets a
??? c adds b
??? print a
a equals 1
??? print b
b equals 2
??? print c
c equals 3
??? print z
z is undefined.
??? print 32
32
??? blerg
Syntax error.
??? 23 gets z
Syntax error.
??? quit
Goodbye.

0 个答案:

没有答案