/ / Nowość w Pythonie, myślę, że używam sumy niepoprawnie? - python, tablice, lista, suma

Nowość w Pythonie, myślę, że używam sumy nieprawidłowo? - python, tablice, 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

Ten program ma dodawać wszystkie podane liczby. To nie zadziałało, więc spróbowałem zrobić listę:

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)

i nadal by nie działało? Jakieś rozwiązania, dlaczego? Jestem początkującym Pythonem i robię to tylko od około miesiąca. Dzięki!

Odpowiedzi:

2 dla odpowiedzi № 1
input1= int(raw_input("Enter numbers to add"))

Musisz wpisać rzut, ponieważ to, co wpisujesz, jest łańcuchem. To powinno rozwiązać problem.

Lub, jak zauważył Keith Randall, używaj input("Enter numbers to add") zamiast.


0 dla odpowiedzi nr 2

Przede wszystkim zakładam, że twoje wcięcie jest poprawne (tab / spacje dla instrukcji wewnątrz pętli while) - w przeciwnym razie powinieneś to naprawić.

Ponadto raw_input zwraca ciąg znaków. W pierwszym przykładzie można go zastąpić „wejściem”, a to zadziała.

W drugim przykładzie można podzielić ciąg na liczby i zastosować do nich sumę, tak jak poniżej:

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

Zauważ, że użyłem „rozszerzenia”, a nie dołączenia - w przeciwnym razie dodawałbym listę liczb jako element listy na liście, zamiast rozszerzać ją o nowe liczby.


0 dla odpowiedzi № 3

Wygląda na to, że chcesz zakończyć na pustym wejściu, więc powinieneś to sprawdzić przed próbą przekształcenia go w 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

Ten program ulegnie awarii, jeśli użytkownik wprowadzi coś, czego nie można przekonwertować na int, więc możesz dodać obsługę wyjątków w ten sposób

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

Podobnie w drugiej wersji programu musisz to zrobić

lon.append(int(input1))

Możesz dodać obsługę wyjątków podobną do tej przedstawionej powyżej