/ / Nuevo en Python, ¿crees que estoy usando la suma incorrectamente? - Python, matrices, lista, suma

Nuevo en Python, ¿crees que estoy usando la suma incorrectamente? - Python, matrices, lista, suma

input1 = raw_input("Hello enter a list of numbers to add up!")
lon = 0
while input1:
input1 = raw_input("Enter numbers to add")
lon = lon + input1
print lon

Se supone que este programa agrega todos los números dados. No funcionaría, así que intenté hacer una lista:

input1 = raw_input("Hello enter a list of numbers to add up!")
lon = []
while input1:
input1 = raw_input("Enter numbers to add")
lon.append(input1)
print sum(lon)

¿Y todavía no funcionaría? ¿Alguna solución por qué? Soy un principiante de Python y lo he estado haciendo solo durante aproximadamente un mes. ¡Gracias!

Respuestas

2 para la respuesta № 1
input1= int(raw_input("Enter numbers to add"))

Debes escribir cast it, ya que lo que estás ingresando es una cadena. Eso debería solucionar el problema.

O como Keith Randall, señaló, utiliza input("Enter numbers to add") en lugar.


0 para la respuesta № 2

En primer lugar, asumo que su sangría es correcta (tab / espacios para la declaración dentro del bucle while); de lo contrario, debería arreglarlo.

Además, raw_input devuelve una cadena. En el primer ejemplo, podría reemplazarlo con "entrada", y funcionaría.

En el segundo ejemplo, podría dividir la cadena en números y aplicarles una suma, de este modo:

input1 = raw_input("Enter numbers to add")
lon.extend(map(int, input1.split()))

Tenga en cuenta que usé "extender" y no anexar; de lo contrario, agregaría la lista de números como un elemento de la lista dentro de la lista, en lugar de extenderla con nuevos números.


0 para la respuesta № 3

Parece que tal vez desee terminar en una entrada vacía, por lo que debe verificarlo antes de intentar convertirlo en un int.

print "Hello enter a list of numbers to add up!"
lon = 0
while True:
input1 = raw_input("Enter numbers to add")
if not input1:
# empty string was entered
break
lon = lon + int(input1)
print lon

Este programa se bloqueará si el usuario ingresa algo que no se puede convertir en un int, por lo que puede agregar un controlador de excepciones como este

print "Hello enter a list of numbers to add up!"
lon = 0
while True:
input1 = raw_input("Enter numbers to add")
if not input1:
# empty string was entered
break
try:
lon = lon + int(input1)
except ValueError:
print "I could not convert that to an int"
print lon

Del mismo modo, en la segunda versión de tu programa, deberías hacer esto

lon.append(int(input1))

Podría agregar un controlador de excepciones similar al que se muestra arriba