如何使 raw_input 不是 python 中的字符串

How To Make raw_input Not A String In 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。

您不需要用 int() 将 eqn 变量中的 raw_input 括起来吗? 我使用 python 3,但这应该可以解决您的问题。

您可以使用 input 而不是 raw_input,但这并不是一个好主意,因为每次调用 eqn 它将调用 input 并提示您输入方程式。

更好的方法是预先存储方程(使用raw_input),然后在lambda中使用eval功能。类似于:

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()