我想编写一个Python字符串,在执行时执行此操作:
if condition:
consequence
else:
alternative
所以,我尝试了类似的东西:
string = 'if condition: consequence; else: alternative;'
执行:
>>> exec(string)
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
exec(string)
File "<string>", line 1
if condition: consequence; else: alternative;
^
SyntaxError: invalid syntax
但是如您所见,我收到语法错误。如何格式化字符串?
感谢您的帮助!
PS:这个问题不是关于如何评估或执行Python字符串(请参阅How do I execute a string containing Python code in Python?),而是关于执行if..then..else子句所需的格式。
某些背景信息:
我正在关注这本书&#34;理解计算&#34;汤姆斯图尔特。其中一部分是了解编程语言的工作原理。因此,他提供了实施玩具语言的示例代码&#39; SIMPLE&#39;。他在Ruby中展示了如何将SIMPLE转换为Ruby代码的代码。但是,我试图用Python写这个,因为这让我更感兴趣。 Ruby的例子是:
def to_ruby
"-> e { if (#{condition.to_ruby}).call(e)" +
" then (#{consequence.to_ruby}).call(e)" +
" else (#{alternative.to_ruby}).call(e)" +
" end }"
end
答案 0 :(得分:2)
您可以使用exec
执行Python语句,包括换行符:
>>> exec("if True:\n print 'abc'\nelse:\n print 'def'")
abc
如果使用Python 3,则需要括号用于打印:
>>> exec("if True:\n print('abc')\nelse:\n print('def')")
abc
答案 1 :(得分:2)
根据Kevin Guan和Tom Karzes的意见,我找到了以下替代解决方案:
>>> exec("""
if True:
print('abc')
else:
print('def')
""")
abc
这种格式避免了有点烦人的\ n符号。