|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 135
|
[Python] Calcolatrice
Ciao a tutti!
Ho iniziato tempo fa a studiare il C, ma sono passato poco fa al Python e ora, per divertimento, sto creando una piccola calcolatrice. Vorrei chidervi cosa ne pensate e se posso migliorarla. Per ora ho integrato le semplici operazioni, la radice ( sqrt(x) ) e il valore assoluto ( fabs(x) ); gli altri tipi di calcolo li aggiungerò poi!! Ecco il codice: Codice:
#!/usr/bin/env python
# PyCalc
# by NiCkErX
# 06/10/'08
from math import *
# Funzione visualizzazione menù
def visMenu():
print
print "Elenco operazioni possibili:"
print "0) Semplici Operazioni 1) Sqrt(x) 2) Fabs(x)"
print
# Funzione controllo scelta
def controlloScelta( s ):
if s == '0':
operazioni()
elif s == '1':
calcSqrt()
elif s == '2':
calcFabs()
else:
print "Scelta sbagliata. Inserirne un'altra."
# Funzione per semplici operazioni:
def operazioni():
print "Inserisci di seguito tutte le operazioni da svolgere. -1 per terminare:"
espr = float( input() )
while espr != -1:
print espr
scelta = raw_input( "Continuare? " )
if scelta == 'y' or 'Y':
operazioni()
elif scelta == 'n' or 'N':
espr = -1
else:
print "Scelta errata. Riprovare."
# Funzione per il calcolo della radice quadrata
def calcSqrt():
x = input( "Inserisci un numero di cui calcolare la radice quadrata: " )
print "La radice di", x, "è", sqrt( x )
# Funzione per il calcole del valore assoluto
def calcFabs():
x = input( "Inserisci un numero di cui calcolare il valore assoluto: " )
print "Il valore assoluto di", x, "è", fabs( x )
# Corpo Programma
print "\t\t\t\tPyCalc by NiCkErX"
visMenu()
scelta = raw_input( "Scegli una tra le operazioni disponibili, a per terminare l'esecuzione: " )
while scelta != 'a':
controlloScelta( scelta )
visMenu()
scelta = raw_input( "Scegli una tra le operazioni disponibili, a per terminare l'esecuzione: " )
print
print "Fine Esecuzione."
raw_input( "Premere un tasto per terminare..." )
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Potresti provare a utilizzare i dizionari per implementare le scelte multiple, anziché le catene di if / elif / else.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 135
|
Ho modificato la funzione "controllaScelta()" aggiungendo un dizoinario in questa maniera:
Codice:
# Funzione controllo scelta
def controlloScelta( s ):
sceltaOperazioni = { '0' : operazioni(), '1' : calcSqrt(), '2' : calcFabs() }
sceltaOperazioni[ s ]
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Codice:
# Funzione controllo scelta
def controlloScelta(s):
sceltaOperazioni = {'0' : operazioni, '1' : calcSqrt, '2' : calcFabs}
sceltaOperazioni[s]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 135
|
Grazie mille, non avevo mai visto prima questa tecnica!!
Comunque dovrei aver eliminato ogni bug e ho anche migliorato un po' l'iterfaccia utente. Codice aggiornato: Codice:
#!/usr/bin/env python
# PyCalc
# by NiCkErX
# 07/10/'08
from math import *
# Funzione visualizzazione menù
def visMenu():
print
print "Elenco operazioni possibili:"
print "0) Semplici Operazioni 1) Sqrt(x) 2) Fabs(x)"
print
# Funzione controllo scelta
def controlloScelta( s ):
sceltaOperazioni = { '0' : operazioni, '1' : calcSqrt, '2' : calcFabs }
sceltaOperazioni[ s ]()
# Funzione per semplici operazioni:
def operazioni():
print "Inserisci di seguito tutte le operazioni da svolgere:\n"
espr = input()
print
print "Il risultato è :", espr
print
s = raw_input( "Continuare? (Sì : y, No: n): " )
print
if s == 'y':
operazioni()
elif s == 'n':
return
else:
print "Scelta errata. Ritentare."
return
# Funzione per il calcolo della radice quadrata
def calcSqrt():
x = input( "Inserisci un numero di cui calcolare la radice quadrata: " )
print "\nLa radice di", x, "è", sqrt( x )
s = raw_input( "\nContinuare? (Sì : y, No: n): " )
while s != 'n':
x = input( "Inserisci un altro numero di cui calcolare la radice quadrata: " )
print "\nLa radice di", x, "è", sqrt( x )
s = raw_input( "\nContinuare? (Sì : y, No: n): " )
# Funzione per il calcole del valore assoluto
def calcFabs():
x = input( "Inserisci un numero di cui calcolare il valore assoluto: " )
print "\nIl valore assoluto di", x, "è", fabs( x )
s = raw_input( "\nContinuare? (Sì : y, No: n): " )
while s != 'n':
x = input( "Inserisci un altro numero di cui calcolare il valore assoluto: " )
print "\nIl valore assoluto di", x, "è", fabs( x )
s = raw_input( "\nContinuare? (Sì : y, No: n): " )
# Corpo Programma
print "\t\t\t\tPyCalc by NiCkErX"
visMenu()
scelta = raw_input( "Scegli una tra le operazioni disponibili, a per terminare l'esecuzione: " )
while scelta != 'a':
controlloScelta( scelta )
visMenu()
scelta = raw_input( "Scegli una tra le operazioni disponibili, a per terminare l'esecuzione: " )
print
print "Ciao!!"
Per ora ho optato per l'eliminazione del ciclo e dell'opzione di non fare calcoli nonostante sia stata scelta una data operazione. Ci penserò un po' sopra!! |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Puoi prender spunto da qui, se t'interessa.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:22.





















