Forum >> Programmazione Python >> Scripting >> Virgole

Pagina: 1

Scusate sono nuovo in questo linguaggio, per iniziare ho voluto fare una calcolatrice (come molti immagino, ma usando float (input (inserisci numero: )), se per sbaglio metto la virgola una volta avviato il programma mi dirá errore, e solo col punto funziona correttamente, esempio:
Inserisci il numero: 23.6




Inserisci il numero: 23,6

Errore




Quindi, c'é un comando per far funzionare il programma pur mettendo la virgola? Grazie. ;)

P.s: se ho sbagliato sezione scusate, sono nuovo anche del forum :confused:
Inserisci il numero: 23,6

Errore
Ciao a te e benvenuto.

Mi sorge un dubbio visto che non lo dici: su che versione del linguaggio sei?

Te lo chiedo perché se ti viene restituito errore nel momento dell'inserimento, non vorrei che fossi su Python 2.7 e stessi usando input() che è un errore di fondo. Invece sia su Python 2.7 con raw_input(), che sulla 3.5 con input(), otterrai una stringa, quindi sarà accettata sia la virgola che il punto. A quel punto inserendo dei semplici controlli, con un str.find() ad esempio, non avrai problemi in presenza della virgola o del punto.

NOTA: Per inciso l'inserimento da input() sulla 2.7 genera un tupla ed anche qui potresti utilizzarlo con un semplice controllo. Ma non spacchiamoci la testa, non usare input() e vivi felice.

P.s: se ho sbagliato sezione scusate, sono nuovo anche del forum :confused:

Sarebbe più appropriata la sezione Principianti, ma non è un gran problema.

Cya




--- Ultima modifica di Daniele aka Palmux in data 2016-09-01 09:09:45 ---
Daniele aka Palmux said @ 2016-09-01 09:03:27:
Inserisci il numero: 23,6

Errore
Ciao a te e benvenuto.

Mi sorge un dubbio visto che non lo dici: su che versione del linguaggio sei?

Te lo chiedo perché se ti viene restituito errore nel momento dell'inserimento, non vorrei che fossi su Python 2.7 e stessi usando input() che è un errore di fondo. Invece sia su Python 2.7 con raw_input(), che sulla 3.5 con input(), otterrai una stringa, quindi sarà accettata sia la virgola che il punto. A quel punto inserendo dei semplici controlli, con un str.find() ad esempio, non avrai problemi in presenza della virgola o del punto.

NOTA: Per inciso l'inserimento da input() sulla 2.7 genera un tupla ed anche qui potresti utilizzarlo con un semplice controllo. Ma non spacchiamoci la testa, non usare input() e vivi felice.

P.s: se ho sbagliato sezione scusate, sono nuovo anche del forum :confused:


Sarebbe più appropriata la sezione Principianti, ma non è un gran problema.

Cya




--- Ultima modifica di Daniele aka Palmux in data 2016-09-01 09:09:45 ---

Davvero grazie mille! In ogni caso, uso la versione 3.5.2 :P

Allora intanto grazie ancora per la risposta precedente, ma non ho capito bene un punto:

ho detto nel messaggio scorso quale versione usavo, ma nonostante ciò, non essendo per niente esperto, non ho capito tantissimo. Ergo non sei stato te a formulare il messaggio male, mi pare ovvio essendo te l'esperto, ma sono io che sono un po' sbadato ed essendo teoricamente nuovo nel mondo di programmazione :confused:


Grazie ancora.




P.S: Sto usando momentaneamente questa serie di comandi:




x=float(input("Inserire lato quadrato "))

a=(x*x)

print("Area = ",round(a,2))




L'obiettivo è far girare il programma anche se qualcuno inserisce la virgola( , ) al posto del ( . ) per introdurre i decimali






--- Ultima modifica di gien153 in data 2016-09-03 20:02:46 ---
L'obiettivo è far girare il programma anche se qualcuno inserisce la virgola( , ) al posto del ( . ) per introdurre i decimali
Quello che diceva Daniele è che ogni stringa in Python dispone di molte funzioni interne (chiamate metodi) per svolgere diversi compiti comuni (ricerca, scomposizione, trasformazione, sostituzione). Qui alcuni esempi, in particolare il metodo replace è quello che serve per sostituire qualcosa con qualcos'altro.


Seconda cosa, alcune sintassi Python possono apparire lunghe e complesse, come questa:
a = bin(1500)[2:].rjust(16, "0")

...ma sono solo la composizione (da sinistra verso destra) di diversi passi elementari:
s = bin(1500)            <--- s = stringa che rappresenta il valore 1500 in binario
s = s[2:]                <--- s = la stringa precedente meno i primi due caratteri
a = s.rjust(16, "0")     <--- a = la stringa precedente giustificata a destra in campo di 16 zeri

Così anche:
x=float(input("Inserire lato quadrato "))

è la compisizione di:
x = input("Inserire lato quadrato ")   <--- x = stringa immessa
x = float(x)                           <--- x = conversione stringa precedente in float

Quindi basta mettere li in mezzo un replace:
x = x.replace(",", ".")                <--- x = stringa precedente con ',' sostituito con '.'

E visto quanto detto dovrebbe essere chiaro come comporre tutto in un'unica riga:
x = float(input("Inserire lato quadrato ").replace(",", "."))


--- Ultima modifica di Claudio_F in data 2016-09-04 12:39:42 ---
*** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione ***


Pagina: 1



Esegui il login per scrivere una risposta.