Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-10-2008, 19:29   #1
NickerX
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..." )
__________________

E6600 @ 3330 Dissy Stock
NickerX è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2008, 20:45   #2
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2008, 22:40   #3
NickerX
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 ]
Devo anche correggere la funzione "operazione()" perché ha grandi problemi!!
__________________

E6600 @ 3330 Dissy Stock
NickerX è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2008, 08:40   #4
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da NickerX Guarda i messaggi
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 ]
Devo anche correggere la funzione "operazione()" perché ha grandi problemi!!
Dovresti correggere anche controlloScelta:
Codice:
# Funzione controllo scelta
def controlloScelta(s):
    sceltaOperazioni = {'0' : operazioni, '1' : calcSqrt, '2' : calcFabs}
    
    sceltaOperazioni[s]()
Nel dizionario bisogna mettere il nome della funzione, non la sua invocazione (con le parentesi tonde), che deve avvenire dopo.
__________________
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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2008, 20:23   #5
NickerX
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!!"
Ho un solo problema, nella versione precendente, il corpo della funzione operazioni era, quasi completamente, un ciclo while, ma poiché uso input() per ricevere i dati dall'utente non riesco a gestire un valore sentinella.
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!!
__________________

E6600 @ 3330 Dissy Stock
NickerX è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2008, 21:29   #6
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Bentornati nel 2007: le memorie DDR3 rin...
Stellantis aderisce ad AI4I e Fondazione...
Google Pixel 10a: prime conferme sul pre...
ISRO potrebbe lanciare la capsula Gagany...
Un nuovo leak conferma dimensioni e novi...
Steam Machine: requisiti Verified piu' s...
NVIDIA GeForce RTX 5070 Ti fuori produzi...
Sony ha annunciato i nuovi giochi che en...
IBM Sovereign Core: la sovranità ...
Cerchi un'asciugatrice conveniente su Am...
Ayaneo Pocket Play arriverà in ri...
iPad Pro 11'' con chip M4 scende a 949€ ...
The Sims entra in una nuova era, ma l'ac...
Netflix, Disney o Prime Video: qual &egr...
Perplexity blocca la generazione di imma...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 02:15.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v