calcolatrice in python

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Avatar utente
roxdragon
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1322
Iscrizione: mercoledì 20 agosto 2008, 18:25
Località: 192.168.1.1

calcolatrice in python

Messaggio da roxdragon »

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
Cisco Networking Technician and Developer
Bakuriu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1156
Iscrizione: venerdì 23 ottobre 2009, 23:43
Desktop: KDE4
Distribuzione: Kubuntu 12.04 LTS - x86_64

Re: calcolatrice in python

Messaggio da Bakuriu »

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
Avatar utente
roxdragon
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1322
Iscrizione: mercoledì 20 agosto 2008, 18:25
Località: 192.168.1.1

Re: calcolatrice in python

Messaggio da roxdragon »

scusa non ho capito che c'entra con la calcolatrice  ::)
Cisco Networking Technician and Developer
calntiz
Prode Principiante
Messaggi: 93
Iscrizione: mercoledì 14 ottobre 2009, 19:23

Re: calcolatrice in python

Messaggio da calntiz »

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.
tomallevi
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1746
Iscrizione: venerdì 24 ottobre 2008, 22:41

Re: calcolatrice in python

Messaggio da tomallevi »

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. :)
Avatar utente
roxdragon
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1322
Iscrizione: mercoledì 20 agosto 2008, 18:25
Località: 192.168.1.1

Re: calcolatrice in python

Messaggio da roxdragon »

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?
Cisco Networking Technician and Developer
Avatar utente
roxdragon
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1322
Iscrizione: mercoledì 20 agosto 2008, 18:25
Località: 192.168.1.1

Re: calcolatrice in python

Messaggio da roxdragon »

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
Cisco Networking Technician and Developer
tomallevi
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1746
Iscrizione: venerdì 24 ottobre 2008, 22:41

Re: calcolatrice in python

Messaggio da tomallevi »

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?
calntiz
Prode Principiante
Messaggi: 93
Iscrizione: mercoledì 14 ottobre 2009, 19:23

Re: calcolatrice in python

Messaggio da calntiz »

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  :)
Avatar utente
roxdragon
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1322
Iscrizione: mercoledì 20 agosto 2008, 18:25
Località: 192.168.1.1

Re: calcolatrice in python

Messaggio da roxdragon »

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] ?
Cisco Networking Technician and Developer
Avatar utente
roxdragon
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1322
Iscrizione: mercoledì 20 agosto 2008, 18:25
Località: 192.168.1.1

Re: calcolatrice in python

Messaggio da roxdragon »

scusa ma di quanto hai fatto l'indentazione di def menu??
Cisco Networking Technician and Developer
tomallevi
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1746
Iscrizione: venerdì 24 ottobre 2008, 22:41

Re: calcolatrice in python

Messaggio da tomallevi »

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)
calntiz
Prode Principiante
Messaggi: 93
Iscrizione: mercoledì 14 ottobre 2009, 19:23

Re: calcolatrice in python

Messaggio da calntiz »

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.
Jean Denis RdR
Prode Principiante
Messaggi: 1
Iscrizione: domenica 12 marzo 2017, 14:16
Desktop: KDE
Distribuzione: Slackware64
Sesso: Maschile

Re: calcolatrice in python

Messaggio da Jean Denis RdR »

questo è ancora più semplice e funzionale:

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




questo è tutto
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: calcolatrice in python

Messaggio da crap0101 »

Jean Denis RdR [url=http://forum.ubuntu-it.org/viewtopic.php?p=4965572#p4965572][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] 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
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 14 ospiti