2017-04-14 2 views
0

Je veux faire ce programme faire la somme de quelque chose avec leur entrée. Mon code jusqu'àComment faire raw_input pas une chaîne en 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 

je reçois l'erreur que je ne peux pas ajouter un entier et une chaîne ensemble est donc là un moyen de rendre l'équation raw_input pour ne pas une chaîne. Comme au lieu d'être 'n + 1', je veux qu'il soit n + 1.

Répondre

0

Vous pouvez utiliser entrée au lieu de raw_input, mais ce n'est pas vraiment une bonne idée, car à chaque fois eqn est appelé il appellera une entrée et vous invite à l'équation.

Une meilleure méthode consiste à stocker à l'avance l'équation (en utilisant raw_input), et ensuite utiliser eval dans la fonction de lambda. Quelque chose comme:

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

Vous n'avez pas besoin d'entourer votre raw_input dans votre variable eqn avec un int()? J'utilise python 3, mais cela devrait résoudre vos problèmes.