我已经编写了代码。就像我们运行原始的python一样。它使用eval
和exec
。当我尝试制作函数或其中的任何if
语句时,它不起作用。这是代码:
print("Python\n")
while True:
command =input(">>> ")
if command == "quit()":break
try:
try:
eval(command)
except:
exec(command)
except Exception as err:
print("Exception: "+str(err))
运行:
Python
>>> a = input("Enter your name: ")
Enter your name: abc
>>> print(a)
abc
>>> if True:
Exception: unexpected EOF while parsing (<string>, line 1)
>>> if True:print(a);if a == "abc":print("Great Abc")
Exception: invalid syntax (<string>, line 1)
>>>
答案 0 :(得分:1)
由于您一次只处理一行,因此,如果您仅编写if True:
,则python解释器将引发错误。在普通解释器中,这将触发多行编辑,并且仅在您创建空行时才开始执行。
另一方面,如果您将某些内容放在if语句之后会起作用(例如if True: print("true")
),但是您不能像尝试这样做那样将if语句依次链接在一起。但是,您可以链接诸如if True:print("first line");print("second line")
之类的普通语句。
功能也有同样的问题。他们必须先在定义之后加上一条声明,然后才能解释,通常,您将被允许在函数被读取之前键入该定义。
您可以更改代码以允许这种行为,这样,如果一行以:
结尾,则应继续读取输入,并仅在输入空行后才执行输入。
答案 1 :(得分:0)
如果语句至少需要2行(带有缩进),则评估函数将评估一行代码。尝试lambda表达式
lambda x: True if a == True else False