J'ai travaillé sur cette mission pour l'école et je ne peux tout simplement pas comprendre ce que je ne peux pas obtenir ce programme de fonctionner correctement. J'essaie d'obtenir le programme pour permettre à l'utilisateur d'entrer trois animaux. Il ne me permet que d'en entrer un. Je sais que cela a à voir avec mon placement de l'instruction de retour dans la fonction Voici mon code: P> make_list code> mais ne peut pas comprendre comment le réparer. import pet_class
#The make_list function gets data from the user for three pets. The function
# returns a list of pet objects containing the data.
def make_list():
#create empty list.
pet_list = []
#Add three pet objects to the list.
print 'Enter data for three pets.'
for count in range (1, 4):
#get the pet data.
print 'Pet number ' + str(count) + ':'
name = raw_input('Enter the pet name:')
animal = raw_input('Enter the pet animal type:')
age = raw_input('Enter the pet age:')
#create a new pet object in memory and assign it
#to the pet variable
pet = pet_class.PetName(name,animal,age)
#Add the object to the list.
pet_list.append(pet)
#Return the list
return pet_list
pets = make_list()
6 Réponses :
Retirez un indent avant le retour. P>
Un peu plus de détails aiderait: la boucle de fabrication de make_list () traverse une fois et revenait ensuite. Dans l'indentation de Python est important.
Vous avez juste besoin de renvoyer le pet_list code> en dehors de la boucle pour la boucle, de sorte que la boucle a fini de fonctionner. def make_list():
pet_list = []
print 'Enter data for three pets.'
for count in range (1, 4):
print 'Pet number ' + str(count) + ':'
name = raw_input('Enter the pet name:')
animal=raw_input('Enter the pet animal type:')
age=raw_input('Enter the pet age:')
print
pet = pet_class.PetName(name,animal,age)
pet_list.append(pet)
return pet_list
Merci beaucoup. Incroyable comment quelque chose de si simple peut être négligé
Vous avez la déclaration de retour au niveau d'indentation incorrect. Il devrait être à la même profondeur que la déclaration. Avoir le retour dans la boucle le fait sortir de la boucle. p>
Votre espacement est éteint. Retour PET_LIST est dans la portée de la boucle pour. p>
Je ne réponds à nouveau que de nouveau, car je remarque que votre sujet indique déjà le problème, et personne n'a donné une ... une explication théorique, ici .. théorique étant trop gros mot dans ce cas, mais peu importe.
Votre problème est précisément que vous mettez la déclaration de retour à l'intérieur de la boucle. La boucle pour la boucle exécute chaque affirmation pour cependant tant de fois. Si l'une de vos déclarations est un retour, la fonction reviendra quand elle le frappe. Cela donne un sens dans, par exemple, le cas suivant: p> ici, la fonction iTère jusqu'à ce qu'elle trouve où l'aiguille est dans la fointe, puis renvoie cet index (il y a une fonction intégrée pour le faire, de toute façon). Si vous souhaitez que la fonction soit exécutée pendant de nombreuses fois, vous le direz, vous devez mettre le retour après la boucle pour la boucle, non à l'intérieur, la fonction reviendra après la mise hors tension de la boucle p> (à nouveau, il y a une fonction intégrée pour le faire aussi) p> p>
Vous remarquez que la boucle ne fonctionne qu'une fois que la déclaration de retour est à l'intérieur de l'instruction IF, dans la boucle
J'ai eu un problème similaire avec mon code: P>
Retourner le numéro de même int. dans le tableau donné. Remarque: l'opérateur% "mod" calcule le reste, par exemple. 5% 2 est 1. p> si vous allez visualiser l'exécution et la coller dans mon code http://www.pythontutor.com/visualize.html#mode=edit P> Une fois que je l'a signalé 8 espaces (même profondeur que la déclaration pour), il a couru plusieurs fois et a donné la sortie correcte. P> p>
Est-ce que cela répond à votre question? Comment utiliser une déclaration de retour dans A pour boucle? < / a>