Forum
>>
Principianti
>>
Far funzionare una funzione
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
|
Scritto da Heryx |
2016-04-05 09:27:14 - Far funzionare una funzione
|
|
Salve a tutti,
da poco ho ripreso python, ma posso dire che dopo mesi non ricordo quasi niente. Vorrei creare una funzione che mi facesse delle domande sul nome e il numero di cellulare, per inserirli in un dizionario. Questo è il codice: nomi = []
numeri = []
def insert_dict(key,value):
a = input('Inserisci il tuo nome: ')
b = input('Inserisci il tuo numero telefonico: ')
if a == True:
key.append(a)
else:
input('Non hai inserito nessun nome. Riprova!')
if b == True:
value.append(b)
else:
input('Non hai inserito nessun numero. Riprova!')
insert_dict()
questo è l'errore che mi da:TypeError: insert_dict() takes exactly 2 arguments (0 given) Grazie a tutti in anticipo! --- Ultima modifica di Heryx in data 2016-04-05 09:28:25 --- |
|
|
Scritto da Heryx |
2016-04-05 09:28:57 - Re: Far funzionare una funzione
|
|
Il tutto è indentato..
|
|
|
Scritto da Daniele aka Palmux ![]() |
2016-04-05 11:13:28 - Re: Far funzionare una funzione
|
L'errore è già autoesplicativo, la funzione insert_dict() richiede due argomenti, che tu non fornisci.
Quindi la funzione dovrebbe essere: def insert_dict(): ---il tuo codice---oppure quando la richiami: insert_dict("aggiungi","qualcosa") #Tipo nomi e numeri?E fin qui abbiamo pensato all'errore.
Però nel tuo codice c'è un altro grosso errore, che non farà mai funzionare lo script. Cerchi di aggiungere i valori inseriti dall'utente a key e value, che però non corrispondono a nulla, non certo alle liste nomi e numeri (che forse vorresti passare alle funzione?). Insomma fai un po' di refactoring del codice. Ciao. Daniele |
|
|
Scritto da Heryx |
2016-04-05 14:04:38 - Re: Far funzionare una funzione
|
|
Ciao Daniele,
grazie per aver risposto. Faccio subito qualche prova |
|
|
Scritto da Heryx |
2016-04-05 14:17:32 - Re: Far funzionare una funzione
|
|
Ok, ho corretto qualcosa. Adesso mi fa le domande, inserisco i dati, ma non li 'appende' nella lista
Ecco il codice: nomi = []
numeri = []
r = ''
def insert_dict():
a = input('Inserisci il tuo nome: ')
b = raw_input('Inserisci il tuo numero telefonico: ')
if a == r:
nomi.append(a)
else:
input('Non hai inserito nessun nome. Riprova!')
if b == r:
numeri.append(b)
else:
input('Non hai inserito nessun numero. Riprova!')
insert_dict()
Cosa sbaglio? --- Ultima modifica di Heryx in data 2016-04-05 15:10:44 --- --- Ultima modifica di Heryx in data 2016-04-05 15:11:24 --- |
|
|
Scritto da Daniele aka Palmux ![]() |
2016-04-05 16:52:21 - Re: Far funzionare una funzione
|
Alcune cose:
1. Non usare input() ma raw_input(), leggi qui perché (risposta di Claudio_F); 2. La condizione if a == r nel tuo script non vuol dire nulla di concreto; 3. I controlli sui dati inseriti sono pochi ed insufficienti; 4. Quando si va nei due else, di fatto non serve a nulla perché non interagisci con questi nuovi inserimenti. Pulendo il tuo codice appare così: #Ecco le liste iniziali
nomi = []
numeri = []
#Definisco la funzione
def insert_dict():
#Iniziamo dal nome
a = raw_input('Inserisci il tuo nome: ')
if a:
nomi.append(a)
else:
raw_input('Non hai inserito nessun nome. Riprova!: ') #Che ci fai con questo? Nulla...
#Ora tocca al numero
b = raw_input('Inserisci il tuo numero telefonico: ')
if b:
numeri.append(b)
else:
raw_input('Non hai inserito nessun numero. Riprova!: ') #Anche qui che ci fai?
# Posso richiamare la funzione
insert_dict()
NOTA: Devi lavorarci ancora, perché è bel lontano dall'essere quello che ti serve. Cya |
Pagina: 1
Esegui il login per scrivere una risposta.

