对于以下代码:
command = '\'{:.' + str(3) + 'f}\'.format(' + str(12.6543423) + ')'
print(command)
print('{:.3f}'.format(12.6543423))
print(exec(command))
预期结果:
'{:.3f}'.format(12.6543423)
12.654
12.654
实际结果:
'{:.3f}'.format(12.6543423)
12.654
None
请有人告诉我我做错了什么以及如何解决?我都在尝试编写一个数字舍入函数并尝试理解exec命令。
答案 0 :(得分:9)
或者根本不使用exec或eval。使用功能format
优惠:
>>> '{:.{}f}'.format(12.6543423, 3)
12.654
答案 1 :(得分:0)
使用eval()
代替exec()
来获取表达式返回的结果。
答案 2 :(得分:0)
使用eval
。
>>> eval('\'{:.' + str(3) + 'f}\'.format(' + str(12.6543423) + ')')
'12.654'
答案 3 :(得分:0)
或者您可以使用exec
command = '\'{:.' + str(3) + 'f}\'.format(' + str(12.6543423) + ')'
print(command)
mycode = """print('{:.3f}'.format(12.6543423))"""
print('{:.3f}'.format(12.6543423))
exec(mycode)
答案 4 :(得分:0)
你困惑了exec和eval:
In [27]: command = 'print'+'('+'\'{:.' + str(3) + 'f}\'.format(' + str(12.6543423) + ')'+')'
In [28]: exec(command)
12.654