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.
 
   
