2017-04-14 72 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,但是這應該能解決你的問題。

相關問題