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 № 1input1= 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