如何在python中使raw_input不是一个字符串

时间:2017-04-14 23:59:41

标签: python-2.7 raw-input

我想让这个程序用他们的输入做一些事情的总结。到目前为止我的代码

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。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您可以使用输入而不是 raw_input ,但这不是一个好主意,因为每次调用 eqn 时它都会拨打输入并提示您输入等式。

更好的方法是预先存储方程式(使用 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()