Forum >> Principianti >> Far funzionare una funzione

Pagina: 1

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 ---
Il tutto è indentato..


questo è l'errore che mi da:TypeError: insert_dict() takes exactly 2 arguments (0 given)

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
Ciao Daniele,



grazie per aver risposto. Faccio subito qualche prova :)
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 ---
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?
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.