Domanda Aiuto Python

Stato
Discussione chiusa ad ulteriori risposte.

Xenium

Utente Bronze
10 Novembre 2015
38
8
1
41
Ultima modifica:
Ho iniziato da poco a studiare Python. Avevo intenzione di fare un programma in cui l'utente scrivendo per esempio "somma", "moltiplicazione" o qualche altra operazione gli vengono chiesti due valori e poi viene restituito il risultato. Sono sicuro che il codice che ho scritto è sbagliato al 100% ma sono le prime volte che provo a fare qualcosa del genere. So che magari ho scritto cavolate ma capitemi xD. Non voglio che mi scriviate il codice ma che mi diciate cosa ho sbagliato e come dovrei riparare i miei errori.
Codice:
def somma():
    a=int(input("Primo valore= "))
    b=int(input("Secondo valore= "))
    c=a+b
    print ("Somma= ",c)
b1="inizio"
a1={"addizione": def somma()}
while b1 != "":
    b1=input("Cosa vuoi calcolare?")
    if a1.has_key(b1):
        print a1[b1]
 
Ti do due consigli, e metto la soluzione in spoiler:

1. Hai già dichiarato la funzione.

2. Se richiami la funzione all' interno del dizionario, il valore non sarà la funzione stessa ma il valore ritornato da essa.

a = { "addizione" : somma }

if a.has_key(b1):
# Non serve un altro print
a[b1]()
 
Ti do due consigli, e metto la soluzione in spoiler:

1. Hai già dichiarato la funzione.

2. Se richiami la funzione all' interno del dizionario, il valore non sarà la funzione stessa ma il valore ritornato da essa.

a = { "addizione" : somma }

if a.has_key(b1):
# Non serve un altro print
a[b1]()
Grazie mille ho capito.. Potresti chiarirmi un'altra cosa?
Quando faccio partire il programma e inserisco il primo input, in questo caso "addizione", mi esce questo errore
AttributeError: 'dict' object has no attribute 'has_key'
Cercando su internet ho visto che bisognava usare in e allora ho scritto così
if b1 in a1:
a1[b1]()
Il programma funziona ma non ho capito bene il problema con has_key.
 
Grazie mille ho capito.. Potresti chiarirmi un'altra cosa?
Quando faccio partire il programma e inserisco il primo input, in questo caso "addizione", mi esce questo errore
AttributeError: 'dict' object has no attribute 'has_key'
Cercando su internet ho visto che bisognava usare in e allora ho scritto così
if b1 in a1:
a1[b1]()
Il programma funziona ma non ho capito bene il problema con has_key.
Stai usando Python 3?
Perché in Python 3.X è stato rimosso.

Io ho provato con Python 2.X.
 
In python 2, i dizionari avevano il metodo has_key() per testare se un dizionario aveva una determinata key. In python 3 non esiste più ma è presente comunque l'operatore in. Perchè non usarlo?
 
  • Mi piace
Reazioni: TheSeeker
Stato
Discussione chiusa ad ulteriori risposte.