[Python] ciclo while

Flaper87 flaper87 a gmail.com
Mar 6 Ago 2013 11:21:18 CEST


2013/8/5 dunkan.mccloud a tiscali.it <dunkan.mccloud a tiscali.it>

> grazie a tutti anticipatamente.
> sto imparando python
> vorrei capire
> perchè queste righe mi danno errore:
> --------------------------------
>
> somma = 0.0
> data = 0.0
> while data != "":
>     somma += float(input
> ("numero: "))
> print ("somma -> ", somma)
>
> --------------------------------
>
> l'errore è:
>
>   File "sommapy.py",
> line 4, in <module>
>     somma += float(input ("insert number: "))
>
> ValueError: could not convert string to float:
>


Il motivo per il quale vedi quell'errore è perché stai cercando di
convertire una str in float, di preciso, sta cercando di convertire il ""
che usi per interrompere il while in float (btw, il codice che hai passato
non è completo, giusto?):

phantom /tmp $ python2.7 test.py
numero: 12
('somma -> ', 12.0)
numero: "" <---------- float("")
Traceback (most recent call last):
  File "test.py", line 4, in <module>
    somma += float(input("numero: "))          <---------- float("")
ValueError: could not convert string to float:

Un'altra cosa che si vede dal codice è che data non sarà mai "" perché ciò
che prendi da input lo stai subito convertendo a float e sommando a somma.

Ti sconsiglio l'uso di input. In python, input è uguale a fare
eval(raw_input()) perciò, tutto ciò che prendi da input verrà interpretato
come codice Python. Piuttosto, ti consiglio di usare raw_input, prendere
l'input dell'utente e fare il cast a float lato codice (facendo i vari try
/ except del caso).

-- 
Flavio (@flaper87) Percoco
http://www.flaper87.org
http://github.com/FlaPer87
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20130806/0c0edaaf/attachment.html>


Maggiori informazioni sulla lista Python