0
votes

Fonction Python unique sortira un résultat au lieu de prendre des entrées différentes

J'essaie de créer une fonction Python qui accepte de nombreuses entrées (indéfinies) dans une liste comme celle-ci: xxx

mais il n'entraîne qu'un seul résultat au lieu de trois sorties de la liste: < Code> 2.0248456731316713

Qu'est-ce que j'ai mal fait avec le code ci-dessus? Merci!


0 commentaires

4 Réponses :


1
votes

Vous retournez le premier élément, corrigez-le en ajoutant à une liste à la place

def limit(x_es):
    result = []
    for x in x_es:
        result.append(np.sqrt((3-5*x+x**2+x**3))/(x-1))
    return result   

numbers= [1.1, 1.01,1.001]        
limit(numbers)
#[2.0248456731316713, 2.00249843945087, 2.000249984482112]


0 commentaires

2
votes

L'instruction de retour empêche l'exécution de la fonction à la première itération, renvoyant une valeur unique, la valeur calculée du premier élément de la liste d'entrée.

Ce que vous cherchez est soit un Générateur , qui retournera une nouvelle valeur, chaque fois que vous appelez le fonction, ou un compréhension de la liste , qui retournera un nouveau Liste avec les valeurs calculées.

Vous pouvez également utiliser des tableaux numpus directement, car vous semblez l'avoir comme une dépendance (merci @Girish kuniyyal pour l'idée). xxx xxx


0 commentaires

0
votes

Vous pouvez utiliser ci-dessous le code, ce qui corrige le problème

Notez également le problème initial de votre code, c'est que vous utilisez le retour au mauvais endroit car il renvoie le contrôle à la ligne d'appel À première itération elle-même. xxx

Vous pouvez également utiliser la compréhension de la liste ici, qui est une façon plus pythonique de le faire, regardez ci-dessous le code xxx


0 commentaires

1
votes

J'espère que ce code peut vous aider.

   def limit(x_es):
        numbers = np.array(x_es)
        return np.sqrt(3-(5*numbers)+(numbers**2)+(numbers**3))/(numbers-1)

   numbers= [1.1, 1.01,1.001]        
   limit(numbers)


0 commentaires