calcolatrice in python

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

calcolatrice in python

Messaggioda roxdragon » venerdì 4 dicembre 2009, 13:13

ciao ragazzi.. volevo fare una calcolatrice in python.. potete aiutarmi???
passo passo.. non ho ancora molte competenze...
prima di tutto si importa il modulo math

Codice: Seleziona tutto
import math *
input("inserisci il primo numero")
input(" inserisci il secondo numero")
risultato???


per non creare confusione.. volevo fare la calcolatrice solo con + e con - poi a piano a piano aggiungo le altre cose...
potete aiutarmi??
anche spiegandomi come si fa..

grazie
printf("! Ubuntu !");
Mia Wiki e Mie Attività: http://wiki.ubuntu-it.org/GianniOcchipinti
Il mio sito & Sorgenti : http://gianniocchipinti.net
Avatar utente
roxdragon
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1322
Iscrizione: agosto 2008
Località: 192.168.1.1

Re: calcolatrice in python

Messaggioda Bakuriu » venerdì 4 dicembre 2009, 14:42

la cosa più ovvia che mi viene in mente è usare eval...
così non devi fare praticamente nulla.Anche se potrebbe portare dei problemi di sicurezza..
un utente potrebbe scrivere:
Codice: Seleziona tutto
import os;os.system("rm -r ~/*)

ed eliminare tutta la home...
per evitare questo potresti fare un semplice controllo che l'utente non abbia inserito nessun import.

quindi una cosa così:

Codice: Seleziona tutto
testo = input("Inserisci l'espressione:")
if "import" in testo:
    print "Non puoi importare moduli!"
else:
    try:
        print eval(testo)
    except Exception,e:
        print "Si è verificato il seguente errore:"
        print e
Bakuriu
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1156
Iscrizione: ottobre 2009
Desktop: KDE4
Distribuzione: Kubuntu 12.04 LTS - x86_64

Re: calcolatrice in python

Messaggioda roxdragon » venerdì 4 dicembre 2009, 15:11

scusa non ho capito che c'entra con la calcolatrice  ::)
printf("! Ubuntu !");
Mia Wiki e Mie Attività: http://wiki.ubuntu-it.org/GianniOcchipinti
Il mio sito & Sorgenti : http://gianniocchipinti.net
Avatar utente
roxdragon
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1322
Iscrizione: agosto 2008
Località: 192.168.1.1

Re: calcolatrice in python

Messaggioda calntiz » venerdì 4 dicembre 2009, 18:31

ciao roxdragon  

Allora questo è un piccolo esempio di una calcolatrice "stupida"  (rotfl)

Codice: Seleziona tutto
#!/usr/bin/python

def menu():
   print "calcolatrice in python \n\n"
   print "1) addizione"
   print "2) sottrazione"
   print "3) moltiplicazione"
   print "4) divisione"
   print "5) esci"

menu()

scelta = 0
while scelta != 5:
   scelta = input("Inserisci un comando: ")
   if scelta == 1:
      print "Addizione"
      x = input("Inserisci il primo numero: ")
      y = input("inserisci il secondo numero: ")
      ris = x + y
      print "Il risultato dell'addizione e'",ris
      raw_input("Premere invio per continuare")
      print"\n"*300 # comando per pulire lo schermo
      menu() # "ricarica" il menu
   elif scelta == 2:
      print "Sottrazione"
      x = input("Inserisci il primo numero: ")
      y = input("inserisci il secondo numero: ")
      ris = x - y
      print "Il risultato della sottrazione e'",ris
      raw_input("Premere invio per continuare")
      print"\n"*300
      menu()
   elif scelta == 3:
      print "moltiplicazione"
      x = input("Inserisci il primo numero: ")
      y = input("inserisci il secondo numero: ")
      ris = x * y
      print "Il risultato della moltiplicazione e'",ris
      raw_input("Premere invio per continuare")
      print"\n"*300
      menu()
   elif scelta == 4:
      print "divisione"
      x = input("Inserisci il primo numero: ")
      y = input("inserisci il secondo numero: ")
      ris = x % y
      ris2 = x / y
      print "Il risultato della divisione e'",ris2
      print "il resto e'",ris
      raw_input("Premere invio per continuare")
      print"\n"*300
      menu()
   elif scelta == 5:
      raw_input("Premi invio per uscire")
      


Spero che il codice sia abbastanza chiaro se ci sono problemi domanda pure  ;D ;D
Ultima modifica di calntiz il venerdì 4 dicembre 2009, 18:33, modificato 1 volta in totale.
calntiz
Prode Principiante
 
Messaggi: 91
Iscrizione: ottobre 2009

Re: calcolatrice in python

Messaggioda tomallevi » venerdì 4 dicembre 2009, 19:03

roxdragon ha scritto:scusa non ho capito che c'entra con la calcolatrice  ::)

eval è un comando che prende come argomento una stringa contenente codice e lo esegue.
per esempio se faccio
Codice: Seleziona tutto
eval("print "ciao"")

è come fare
Codice: Seleziona tutto
print "ciao"

quindi per rendere sicuro il programma devi evitare che un utente male intenzionato utilizzi il tuo programma, la calcolatrice, come mezzo per cancellare la tua home. se fai un controllo sull'input dell'utente eviti che si possa eseguire codice arbitrario. :)
tomallevi
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1747
Iscrizione: ottobre 2008

Re: calcolatrice in python

Messaggioda roxdragon » venerdì 4 dicembre 2009, 19:08

tomallevi ha scritto:
roxdragon ha scritto:scusa non ho capito che c'entra con la calcolatrice  ::)

eval è un comando che prende come argomento una stringa contenente codice e lo esegue.
per esempio se faccio
Codice: Seleziona tutto
eval("print "ciao"")

è come fare
Codice: Seleziona tutto
print "ciao"

quindi per rendere sicuro il programma devi evitare che un utente male intenzionato utilizzi il tuo programma, la calcolatrice, come mezzo per cancellare la tua home. se fai un controllo sull'input dell'utente eviti che si possa eseguire codice arbitrario. :)


quindi è meglio mettere eval?
printf("! Ubuntu !");
Mia Wiki e Mie Attività: http://wiki.ubuntu-it.org/GianniOcchipinti
Il mio sito & Sorgenti : http://gianniocchipinti.net
Avatar utente
roxdragon
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1322
Iscrizione: agosto 2008
Località: 192.168.1.1

Re: calcolatrice in python

Messaggioda roxdragon » venerdì 4 dicembre 2009, 19:12

calntiz ha scritto:ciao roxdragon  

Allora questo è un piccolo esempio di una calcolatrice "stupida"  (rotfl)

Codice: Seleziona tutto
#!/usr/bin/python

def menu():
   print "calcolatrice in python \n\n"
   print "1) addizione"
   print "2) sottrazione"
   print "3) moltiplicazione"
   print "4) divisione"
   print "5) esci"

menu()

scelta = 0
while scelta != 5:
   scelta = input("Inserisci un comando: ")
   if scelta == 1:
      print "Addizione"
      x = input("Inserisci il primo numero: ")
      y = input("inserisci il secondo numero: ")
      ris = x + y
      print "Il risultato dell'addizione e'",ris
      raw_input("Premere invio per continuare")
      print"\n"*300 # comando per pulire lo schermo
      menu() # "ricarica" il menu
   elif scelta == 2:
      print "Sottrazione"
      x = input("Inserisci il primo numero: ")
      y = input("inserisci il secondo numero: ")
      ris = x - y
      print "Il risultato della sottrazione e'",ris
      raw_input("Premere invio per continuare")
      print"\n"*300
      menu()
   elif scelta == 3:
      print "moltiplicazione"
      x = input("Inserisci il primo numero: ")
      y = input("inserisci il secondo numero: ")
      ris = x * y
      print "Il risultato della moltiplicazione e'",ris
      raw_input("Premere invio per continuare")
      print"\n"*300
      menu()
   elif scelta == 4:
      print "divisione"
      x = input("Inserisci il primo numero: ")
      y = input("inserisci il secondo numero: ")
      ris = x % y
      ris2 = x / y
      print "Il risultato della divisione e'",ris2
      print "il resto e'",ris
      raw_input("Premere invio per continuare")
      print"\n"*300
      menu()
   elif scelta == 5:
      raw_input("Premi invio per uscire")
      


Spero che il codice sia abbastanza chiaro se ci sono problemi domanda pure  ;D ;D


Grazie mille.. sei stato davvero molto comprensivo...
una domanda...

devo mettere per forza questo?
#!/usr/bin/python

Codice: Seleziona tutto
def menu():
   print "calcolatrice in python \n\n"
   print "1) addizione"
   print "2) sottrazione"
   print "3) moltiplicazione"
   print "4) divisione"
   print "5) esci"

menu()


all'ultimo menu() serve per chiudere il menu??? e def menu all inizio per aprirlo?

Codice: Seleziona tutto
scelta = 0
while scelta != 5:


non ho capito questo...
ancora i cicli non li ho fatti... sapresti spiegarmeli sempre ad esempi?

grazie in anticipo
printf("! Ubuntu !");
Mia Wiki e Mie Attività: http://wiki.ubuntu-it.org/GianniOcchipinti
Il mio sito & Sorgenti : http://gianniocchipinti.net
Avatar utente
roxdragon
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1322
Iscrizione: agosto 2008
Località: 192.168.1.1

Re: calcolatrice in python

Messaggioda tomallevi » venerdì 4 dicembre 2009, 19:26

bhe eval pone un problema di sicurezza. e poi dipende come vuoi fare la calcolatrice :)

roxdragon ha scritto:devo mettere per forza questo?
#!/usr/bin/python


in realtà se esegui i programmi sempre con "python nomefile.py" non è obbligatorio. lo diventa, se non sbaglio, quando gli dai i permessi di esecuzione, quando puoi eseguire lo script con "./nomefile.py"

e invece fare una cosa del genere?
Codice: Seleziona tutto
a = raw_input()
op = a.split(" ")
if op[1] == '+':
   print int(op[0]) + int(op[2])
if op[1] == '-':
   print int(op[0]) - int(op[2])
if op[1] == '*':
   print int(op[0]) * int(op[2])
if op[1] == '/':
   print int(op[0]) / int(op[2])

è vero ti impone di inserire cose del tipo "3 + 5" e non "3+5" però è + semplice così no?
tomallevi
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1747
Iscrizione: ottobre 2008

Re: calcolatrice in python

Messaggioda calntiz » venerdì 4 dicembre 2009, 19:35

Ciao  ;D

Allora questa calcolatrice utilizza il while che serve a creare un ciclo finchè la condizione che viene impostata dal "programmatore" non si realizzi quindi il mio ciclo while terminerà quando premerò il numero 5 in questo caso.

Difatti nella parte di codice while != 5 qualsiasi operazione non sia 5 il programma la esegue...una calcolatrice può anche esser fatta con una serie di IF a cascata per intenderci...solo che puoi "eseguire" una sola volta una determinata operazione ( una sola addizione, una sola divisione e cosi via ) il while risolve questo "problema" grazie alla creazione di un ciclo.

Per la questione del def menu(): è una funzione che però in questo caso serve solo a mantenere il codice più pulito...ogni funzione termina con il richiamo del nome seguito dalla chiusura delle parentesi ( "menu ()" ) questo vale solo per queste funzioni cosi semplici.

Spero di esser stato abbastanza chiaro  :)
calntiz
Prode Principiante
 
Messaggi: 91
Iscrizione: ottobre 2009

Re: calcolatrice in python

Messaggioda roxdragon » venerdì 4 dicembre 2009, 19:35

grazie.. si è piu semplice ma non ho capito questo
Codice: Seleziona tutto
op = a.split(" ")
if op[1]

perchè la prima riga? e perchè proprio op [1] ?
printf("! Ubuntu !");
Mia Wiki e Mie Attività: http://wiki.ubuntu-it.org/GianniOcchipinti
Il mio sito & Sorgenti : http://gianniocchipinti.net
Avatar utente
roxdragon
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1322
Iscrizione: agosto 2008
Località: 192.168.1.1

Re: calcolatrice in python

Messaggioda roxdragon » venerdì 4 dicembre 2009, 19:39

scusa ma di quanto hai fatto l'indentazione di def menu??
printf("! Ubuntu !");
Mia Wiki e Mie Attività: http://wiki.ubuntu-it.org/GianniOcchipinti
Il mio sito & Sorgenti : http://gianniocchipinti.net
Avatar utente
roxdragon
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1322
Iscrizione: agosto 2008
Località: 192.168.1.1

Re: calcolatrice in python

Messaggioda tomallevi » venerdì 4 dicembre 2009, 19:42

split divide la stringa contenuta in a dove ci sono gli " ", cioè
Codice: Seleziona tutto
>>> a = "5 + 4"
>>> op = a.split(" ")
>>> print op
['5', '+', '4']

se lo metti dentro un ciclo while o for come ha fatto calntiz hai la possibilità di fare + operazioni.
op[1] contiene l'operatore (+ nell'esempio sopra)
tomallevi
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1747
Iscrizione: ottobre 2008

Re: calcolatrice in python

Messaggioda calntiz » venerdì 4 dicembre 2009, 19:47

roxdragon ha scritto:scusa ma di quanto hai fatto l'indentazione di def menu??


Il def menu(): l'ho utilizzato in questo caso per non riscrivere a meno in ogni blocco di if i print del menu(1) addizione 2) sottrazione)...in questo caso inserendo solo menu() richiama l'intera funzione e di conseguenza ristampa automaticamente tutti i print.
calntiz
Prode Principiante
 
Messaggi: 91
Iscrizione: ottobre 2009

Re: calcolatrice in python

Messaggioda Jean Denis RdR » domenica 12 marzo 2017, 15:54

questo è ancora più semplice e funzionale:

import math
from math import sqrt
while True:
a=input("?")
print a




questo è tutto
Jean Denis RdR
Prode Principiante
 
Messaggi: 1
Iscrizione: marzo 2017
Desktop: KDE
Distribuzione: Slackware64
Sesso: Maschile

Re: calcolatrice in python

Messaggioda crap0101 » lunedì 13 marzo 2017, 13:21

Jean Denis RdR Immagine ha scritto:questo è ancora più semplice e funzionale:

import math
from math import sqrt
while True:
a=input("?")
print a




questo è tutto

figo! allora si può mettere "risolto"


... certo che dopo *sette* anni si sentiva proprio il bisogno di questa perla di saggezza :-(
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
 
Messaggi: 8121
Iscrizione: ottobre 2007
Località: TO
Desktop: Lubuntu
Distribuzione: Ubuntu 14.04.3 LTS
Sesso: Maschile


Torna a Programmazione

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 3 ospiti