/ / Nuovo in Python, penso che sto usando la somma in modo errato? - python, matrici, lista, somma

Nuovo in Python, penso che sto usando la somma in modo errato? - python, matrici, lista, somma

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

Questo programma dovrebbe aggiungere tutti i numeri dati. Non funzionerebbe quindi ho provato a fare 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)

e ancora non funzionerebbe? Qualche soluzione perché? Sono un principiante con Python e lo sto facendo solo da circa un mese. Grazie!

risposte:

2 per risposta № 1
input1= int(raw_input("Enter numbers to add"))

Devi digitare cast, dato che quello che stai inserendo è una stringa. Questo dovrebbe risolvere il problema.

O come ha fatto notare Keith Randall, usa input("Enter numbers to add") anziché.


0 per risposta № 2

Prima di tutto, presumo che il tuo rientro sia corretto (tab / spazi per l'istruzione all'interno del ciclo while) - altrimenti, dovresti correggerlo.

Inoltre, raw_input restituisce una stringa. Nel primo esempio, è possibile sostituirlo con "input" e funzionerebbe.

Nel secondo esempio, puoi dividere la stringa in numeri e applicare la somma a loro, in questo modo:

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

Nota che ho usato "estendi" e non aggiunto - altrimenti, aggiungerei l'elenco di numeri come un elemento di lista all'interno dell'elenco, invece di estenderlo con nuovi numeri.


0 per risposta № 3

Sembra che tu voglia terminare con un input vuoto, quindi dovresti controllarlo prima di provare a trasformarlo in 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

Questo programma si bloccherà se l'utente inserisce qualcosa che non può essere convertito in un int, quindi è possibile aggiungere un gestore di eccezioni come questo

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

Allo stesso modo nella seconda versione del tuo programma, avresti bisogno di farlo

lon.append(int(input1))

È possibile aggiungere un gestore di eccezioni simile a quello mostrato sopra