View Full Version : [Python]Aiuto con code.
andreiiiz
14-11-2011, 15:02
Sono alle prime armi col python e stavo cercando di creare un mio primo programmino, però non riesco a capire perchè quando vado a seguire questa prima parte di codice che ho buttato giù, la shell mi si chiude al'istante senza farmi visualizzare niente.
Ecco il codice:
#Calcolatrice scientifica beta v 1.0.
import math
scelta = raw_input( " ### Calcolatrice scientifica v.1.0. ###"
" \n "
" Scegli una delle seguenti operazioni: \n"
" 1) Addizione. \n"
" 2) Sottrazione. \n"
" 3) Moltiplicazione. \n"
" 4) Divisione. \n")
if scelta <= 0 or scelta > 4
print "Devi inserire un numero da 1 a 4 \n"
raw_input()
Premetto di non sapere molto di Python, ma il codice non è indentato bene e gli manca un ':' dopo la condizione dell'if
#Calcolatrice scientifica beta v 1.0.
import math
scelta = raw_input( " ### Calcolatrice scientifica v.1.0. ###"
" \n "
" Scegli una delle seguenti operazioni: \n"
" 1) Addizione. \n"
" 2) Sottrazione. \n"
" 3) Moltiplicazione. \n"
" 4) Divisione. \n")
if scelta <= 0 or scelta > 4:
print "Devi inserire un numero da 1 a 4 \n"
raw_input()
andreiiiz
14-11-2011, 20:16
Grazie per la risposta ma non cambia niente..la shell si chiude immediatamente..
Qualche aiuto?
andreiiiz
15-11-2011, 07:11
Scusate ma e' possibile che nessuno da fare una scemenza del genere? O.o
cdimauro
15-11-2011, 07:38
d:\C\Python27.NET>python.exe Prova.py
### Calcolatrice scientifica v.1.0. ###
Scegli una delle seguenti operazioni:
1) Addizione.
2) Sottrazione.
3) Moltiplicazione.
4) Divisione.
1
Devi inserire un numero da 1 a 4
2
d:\C\Python27.NET>
andreiiiz
15-11-2011, 12:37
Io lo sto provando con windows, praticamente compilo il codice da me postato con notepad++, poi lo eseguo cliccando sull'ex e la shell mi si chiude immediatamente..Non ho la possibilità di provare con linux ora, quindi mi sono bloccato e non capisco dove sia il problema..
Quello E' Windows. Prova ad eseguirlo, come ha fatto lui, da terminale.
andreiiiz
15-11-2011, 19:53
Ho compilato e eseguito il programma su linux tramite terminale e dopo aver indentato il codice non mi da problemi. Ora però mi da un errore di sintassi sull'if e non capisco dove sia l'errore..questo è il codice:
#Calcolatrice scientifica beta v 1.0.
import math
scelta = raw_input( " ### Calcolatrice scientifica v.1.0. ###"
" \n "
" Scegli una delle seguenti operazioni: \n"
" 1) Addizione. \n"
" 2) Sottrazione. \n"
" 3) Moltiplicazione. \n"
" 4) Divisione. \n"
if scelta <= 1 or scelta > 4:
print "Devi inserire un numero da 1 a 4 \n"
raw_input()
Ho compilato e eseguito il programma su linux tramite terminale e dopo aver indentato il codice non mi da problemi. Ora però mi da un errore di sintassi sull'if e non capisco dove sia l'errore..questo è il codice:
#Calcolatrice scientifica beta v 1.0.
import math
scelta = raw_input( " ### Calcolatrice scientifica v.1.0. ###"
" \n "
" Scegli una delle seguenti operazioni: \n"
" 1) Addizione. \n"
" 2) Sottrazione. \n"
" 3) Moltiplicazione. \n"
" 4) Divisione. \n"
if scelta <= 1 or scelta > 4:
print "Devi inserire un numero da 1 a 4 \n"
xxraw_input()
#Calcolatrice scientifica beta v 1.0.
import math
scelta = raw_input( " ### Calcolatrice scientifica v.1.0. ###"
" \n "
" Scegli una delle seguenti operazioni: \n"
" 1) Addizione. \n"
" 2) Sottrazione. \n"
" 3) Moltiplicazione. \n"
" 4) Divisione. \n")
if scelta <= 1 or scelta > 4:
print "Devi inserire un numero da 1 a 4 \n"
raw_input()
Non hai chiuso la tonda del raw_input. Inoltre, perchè fai un livello di indentazione anche se non ce n'è bisogno? In Python a queste cose sei obbligato a starci attento, per fortuna aggiungerei.
andreiiiz
15-11-2011, 20:31
Ecco, mi stavo scervellando :D grazie!
Ne approfitto per fare un altra domanda.. Come mai se scrivo :
print "Il risultato è", n3
Mi da errore nameError n3 is not defined quando prima avevo scritto n3 = n1 + n2?
Dovresti postare tutto il codice, non siamo degli indovini :p
andreiiiz
15-11-2011, 21:07
#Calcolatrice scientifica beta v 1.0.
import math
def addizione():
n1 = raw_input ("inserisci il primo numero:\n")
n2 = raw_input ("Inserisci il secondo numero:\n")
n3 = n1 + n2
print "Il risultato e'",n3
scelta = raw_input( " ### Calcolatrice scientifica v.1.0. ###"
" \n "
" Scegli una delle seguenti operazioni: \n"
" 1) Addizione. \n"
" 2) Sottrazione. \n"
" 3) Moltiplicazione. \n"
" 4) Divisione. \n")
if scelta < 1 or scelta > 4:
print "Devi inserire un numero da 1 a 4 \n"
elif scelta == 1:
addizione()
elif scelta == 2:
sottrazione()
elif scelta == 3:
moltiplicazione()
elif scelta == 4:
divisione()
raw_input()
E' una variabile locale alla funzione addizione. Non esiste al di fuori.
def addizione():
n1 = raw_input ("inserisci il primo numero:\n")
n2 = raw_input ("Inserisci il secondo numero:\n")
return n1 + n2
print "Il risultato e' ", addizione()
andreiiiz
15-11-2011, 21:46
Mi spiace ma così non va..
#Calcolatrice scientifica beta v 1.0.
import math
def addizione():
n1 = raw_input ("inserisci il primo numero:\n")
n2 = raw_input ("Inserisci il secondo numero:\n")
return n1 + n2
print "Il risultato e'", addizione()
scelta = raw_input( " ### Calcolatrice scientifica v.1.0. ###"
" \n "
" Scegli una delle seguenti operazioni: \n"
" 1) Addizione. \n"
" 2) Sottrazione. \n"
" 3) Moltiplicazione. \n"
" 4) Divisione. \n")
if scelta < 1 or scelta > 4:
print "Devi inserire un numero da 1 a 4 \n"
elif scelta == 1:
addizione()
elif scelta == 2:
sottrazione()
elif scelta == 3:
moltiplicazione()
elif scelta == 4:
divisione()
raw_input()
Se provi questo codice vedrai che esce la scritta:
Il risultato e' inserisci il primo numero:
come prima cosa quindi c'è qualcosa che non va!
Scusa ma non vedi che i blocchi nel tuo codice non sono indentati come nel mio?? Ci credo che non funziona!
Correzione in bold
#Calcolatrice scientifica beta v 1.0.
import math
def addizione():
n1 = raw_input ("inserisci il primo numero:\n")
n2 = raw_input ("Inserisci il secondo numero:\n")
return n1 + n2
print "Il risultato e'", addizione()
scelta = raw_input( " ### Calcolatrice scientifica v.1.0. ###"
" \n "
" Scegli una delle seguenti operazioni: \n"
" 1) Addizione. \n"
" 2) Sottrazione. \n"
" 3) Moltiplicazione. \n"
" 4) Divisione. \n")
if scelta < 1 or scelta > 4:
print "Devi inserire un numero da 1 a 4 \n"
elif scelta == 1:
addizione()
elif scelta == 2:
sottrazione()
elif scelta == 3:
moltiplicazione()
elif scelta == 4:
divisione()
raw_input()
cdimauro
16-11-2011, 07:59
Altra cosa raw_input restituisce la STRINGA immessa dall'utente, che ovviamente NON è un intero.
Per Python < 3.0, si può usare input al posto di raw_input, che VALUTA l'espressione immessa dall'utente. Per Python 3.0+ serve utilizzare input (che è la vecchia raw_input) e provvedere poi alla valutazione "manualmente" (passando il valore alla funzione/costruttore int, ad esempio).
andreiiiz
16-11-2011, 12:44
ndakota grazie per la tua pazienza ma anche con il tuo codice non cambia assolutamente nulla mi dice sempre "il risultato e' inserire il primo numero"! :S
@cdimauro: grazie, come vedo che versione è il mio python?
cdimauro
16-11-2011, 13:24
Dovrebbe già apparirti quando lanci Python (senza script, quindi con l'interprete interattivo).
Comunque:
>>> import sys
>>> sys.version
0: '2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)]'
andreiiiz
16-11-2011, 13:31
Ok, grazie, attendo ndakota per l'aiuto col code!
Bè, da quello che dici non sembra sbagliato, visto che la prima cosa che fa la funzione è chiederti un numero da tastiera. Inseriscilo!
andreiiiz
16-11-2011, 21:49
No, non hai inteso..
Il programma invece di dire "inserisci il primo numero", dice "il risultato è inserisci il primo numero".
C'è qualcosa di sbagliato!
#Calcolatrice scientifica beta v 1.0.
import math
def addizione():
n1 = 5
n2 = 6
return n1 + n2
print "Il risultato e'", addizione()
scelta = raw_input( " ### Calcolatrice scientifica v.1.0. ###"
" \n "
" Scegli una delle seguenti operazioni: \n"
" 1) Addizione. \n"
" 2) Sottrazione. \n"
" 3) Moltiplicazione. \n"
" 4) Divisione. \n")
if scelta < 1 or scelta > 4:
print "Devi inserire un numero da 1 a 4 \n"
elif scelta == 1:
addizione()
elif scelta == 2:
sottrazione()
elif scelta == 3:
moltiplicazione()
elif scelta == 4:
divisione()
raw_input()
A me sembra di aver inteso. Fai questa prova allora.
andreiiiz
16-11-2011, 22:05
Si così funziona, cioè mi da il risultato 11. Però se invece ci metto il raw input mi dice "il risultato è inserisci il primo numero".
E poi io voglio che quella funzione sia richiamata solo nel caso l'utente scelga come opzione dal menu "addizione" e non che il programma deve iniziare con l'addizione direttamente.. Mi sto incartando nel nulla proprio.
E vabbè scusa ma non posso mica fartelo io. Comunque potresti fare qualcosa del genere.
#Calcolatrice scientifica beta v 1.0.
import math
def addizione(n1, n2):
return n1 + n2
def sottrazione(n1, n2):
return n1 - n2
def moltiplicazione(n1, n2):
return n1 * n2
def divisione(n1, n2):
return n1 / n2
n1 = raw_input ("inserisci il primo numero:\n")
n2 = raw_input ("Inserisci il secondo numero:\n")
scelta = raw_input( " ### Calcolatrice scientifica v.1.0. ###"
" \n "
" Scegli una delle seguenti operazioni: \n"
" 1) Addizione. \n"
" 2) Sottrazione. \n"
" 3) Moltiplicazione. \n"
" 4) Divisione. \n")
print "Il risultato e'"
if scelta < 1 or scelta > 4:
print "Devi inserire un numero da 1 a 4 \n"
elif scelta == 1:
print addizione(n1, n2)
elif scelta == 2:
print sottrazione(n1, n2)
elif scelta == 3:
print moltiplicazione(n1, n2)
elif scelta == 4:
print divisione(n1, n2)
raw_input()
Non l'ho provato. Provalo perchè io ho installato la versione 3 e mi scoccio ogni volta a sistemare :D
andreiiiz
16-11-2011, 22:17
Ma infatti non ho chiesto di farlo te, ho chiesto semplicemente perchè quel codice non va bene! Cioè perchè se metto la funziona a inizio codice me la legge come prima cosa nel programma e non quando la richiamo? E poi non riesco a capire perchè se scrivo
def addizione():
n1 = raw_input("inserisci il primo numero \n")
n2 = raw_input("inserisci il secondo numero \n")
return n1 + n2
print "Il risultato e'", addizione()
Non funziona come dovrebbe, cioè invece di chiedermi i dati in input mi va direttamente al print.. Cioè io faccio tutto come è scritto sul libro però non va..
Sinceramente di far funzionare la calcoltrice non me ne frega nulla, a interessa capire, anche perchè non credo che la userà mai qualcuno..
In realtà non va direttamente al print. Tant'è che se togli la chiamata ad addizione le print non te le stampa. Il problema è che quando trova questa riga
print "Il risultato e'", addizione()
Prima esegue addizione() e addizione ha quelle print.
andreiiiz
16-11-2011, 22:28
Ecco appunto, allora se con print "il risultato è," addizione(), non funziona con n3 = n1 + n2 e poi dire print "il risultato è", n3 neanche, come posso scrivere per farmi stampare un risultato senza prendere i dati da argomento??
Così?
def addizione():
n1 = raw_input("inserisci il primo numero \n")
n2 = raw_input("inserisci il secondo numero \n")
return n1 + n2
n3 = addizione()
print "Il risultato e'", n3
Occhio a quello che ti ha detto cdimauro su raw_input però.
Credo tu debba fare una cosa del genere per quelle due righe
n1 = int(raw_input("inserisci il primo numero \n"))
n2 = int(raw_input("inserisci il secondo numero \n"))
cdimauro
17-11-2011, 06:34
DEVE. Oppure, se ha Python <= 2.7, al posto di raw_input usa input e si leva il pensiero della valutazione.
andreiiiz
17-11-2011, 11:00
Ok, allora mi spiegate una cosa?
In python non è come in C, che posso definire la funzione anche all'inizio del codice per poi richiamarla quando voglio? Perchè se io definisco la funzione a inizio codice, il programma legge prima la funzione e poi mi va al menu di scelta..
[intendo così]
#Calcolatrice scientifica beta v 1.0.
import math
def addizione():
n1 = input("inserisci il primo numero \n")
n2 = input("inserisci il secondo numero \n")
return n1 + n2
n3 = addizione()
print "Il risultato e'", n3
scelta = input( " ### Calcolatrice scientifica v.1.0. ###"
" \n "
" Scegli una delle seguenti operazioni: \n"
" 1) Addizione. \n"
" 2) Sottrazione. \n"
" 3) Moltiplicazione. \n"
" 4) Divisione. \n")
if scelta < 1 or scelta > 4:
print "Devi inserire un numero da 1 a 4 \n"
elif scelta == 1:
addizione()
Invece se io la definisco a fine programma ovvero dopo il menù di scelta, mi printa prima il "menù".
Cioè così:
#Calcolatrice scientifica beta v 1.0.
import math
scelta = input( " ### Calcolatrice scientifica v.1.0. ###"
" \n "
" Scegli una delle seguenti operazioni: \n"
" 1) Addizione. \n"
" 2) Sottrazione. \n"
" 3) Moltiplicazione. \n"
" 4) Divisione. \n")
if scelta < 1 or scelta > 4:
print "Devi inserire un numero da 1 a 4 \n"
elif scelta == 1:
addizione()
elif scelta == 2:
print sottrazione(n1, n2)
elif scelta == 3:
print moltiplicazione(n1, n2)
elif scelta == 4:
print divisione(n1, n2)
def addizione():
n1 = input("inserisci il primo numero \n")
n2 = input("inserisci il secondo numero \n")
return n1 + n2
n3 = addizione()
print "Il risultato e'", n3
E comunque nonostante tutto se nel secondo codice al menù di scelta digito 1 (cioè l'addizione) mi da errore. C'è un altro errore nel codice o.o
Ok, allora mi spiegate una cosa?
In python non è come in C, che posso definire la funzione anche all'inizio del codice per poi richiamarla quando voglio?
Certo che è così! Il problema è che tu sposti insieme definizione e chiamata! La definizione è questa
def addizione():
n1 = input("inserisci il primo numero \n")
n2 = input("inserisci il secondo numero \n")
return n1 + n2
La chiamata è questa
n3 = addizione()
Ma mica sei obbligato a far seguire la definizione dalla chiamata. Puoi fare benissimo così
#Calcolatrice scientifica beta v 1.0.
import math
def addizione():
n1 = input("inserisci il primo numero \n")
n2 = input("inserisci il secondo numero \n")
return n1 + n2
scelta = input( " ### Calcolatrice scientifica v.1.0. ###"
" \n "
" Scegli una delle seguenti operazioni: \n"
" 1) Addizione. \n"
" 2) Sottrazione. \n"
" 3) Moltiplicazione. \n"
" 4) Divisione. \n")
n3 = addizione()
print "Il risultato e'", n3
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.