2017-04-14 46 views
0

我想让这个程序做他们的输入的东西的总结。我的代码迄今如何使raw_input不是字符串在python

def summation(): 
start = int(raw_input("Start value of n?: ")) 
end = int(raw_input("End value of n?: ")) 
eqn = lambda n: raw_input("Equation?: ") 
sum = 0 

for i in range(start , end + 1): 
    sum += eqn(i) 

return sum 
print summation() # start will be 1, end will be 5 , equation will be n + 1. Should print 20 

,我感到我不能添加一个整数和一个串起来,那么,有没有办法让对等式的raw_input的不是字符串错误。像它不是'n + 1',我希望它是n + 1.

回答

0

你可以使用输入,而不是的raw_input,但这不是真的是一个好主意,因为每次等式被称为它会调用一个输入并提示您输入的公式。

更好的方法是存储方程预先(使用的raw_input),然后使用EVAL在lambda函数。例如:

def summation(): 
    start = int(raw_input("Start value of n?: ")) 
    end = int(raw_input("End value of n?: ")) 
    fx = raw_input("Equation: ") 
    eqn = lambda n: eval(fx) 
    sum = 0 

    for i in range(start , end + 1): 
     sum += eqn(i) 

    return sum 

print summation() 
0

你不需要用你的eqn变量来包围你的raw_input吗? 我使用python 3,但是这应该能解决你的问题。

相关问题