输入变量

时间:2014-09-15 07:22:20

标签: python variables input plot

我正在使用pygame在python中创建一个简单的函数绘图器。我希望用户能够通过控制台以xy的形式输入功能。例如:
math.sin(x) + math.sin(y)应该是有效的输入。 我该如何做到这一点? 注意: x y 尚未分配任何值,因为该值将替换输入中的变量。

2 个答案:

答案 0 :(得分:0)

exec语句与def语句一起使用,可以从用户给出的字符串arg创建函数。

>>> arg = raw_input() 
>>> arg
'math.sin(x) + math.cos(y)'
>>> exec 'def f(x,y): return ' + arg
>>> f
<function f at 0x000000000021F9E48>

答案 1 :(得分:0)

但你不是“为每个点使用eval”。一旦exec编译代码f(),就像正常函数一样。用这段代码做一些时间来自己看看

#! /usr/bin/env python

'''
exec speed test
'''

import sys, math
from random import seed, random

def main():
    m = len(sys.argv) > 1 and int(sys.argv[1]) or 250000

    def f(x, y):
        return math.sin(x) + math.cos(y)

    funcstr = 'math.sin(x) + math.cos(y)'
    exec 'def g(x,y): return ' + funcstr in globals(), locals()

    #print f, g

    seed(42)

    z = 0.0
    for i in xrange(m):
        z += f(random(), random())
        #z += g(random(), random())

    print z


if __name__ == '__main__':
    main()

在* nix上你可以做time python progname.py;对不起,我不知道Windows等价物。