J'essaie de créer une fonction qui a un ensemble d'entiers dans un tuple pour le premier argument, puis un entier comme deuxième argument, puis divise l'ensemble de nombres dans le tuple par l'entier du deuxième argument, mais ne renvoie que le les nombres qui n'ont pas pu être divisibles de manière égale.
J'ai commencé avec quelque chose comme ça:
def tuple_function(numbers, integers): numbers = (20, 35, 61, 80) integers = 10 for i in numbers: if numbers[i] % integer == 0 print(numbers)
4 Réponses :
def tuple_function(numbers, divisor): return [i for i in numbers if i % divisor]
Que dis-tu de ça?
def tuple_function(numbers, integer): return [num / integer for num in numbers if num % integer != 0]
(Vous pouvez également réduire cette taille en utilisant la compréhension de liste)
def tuple_function(numbers, integer): result = [] for num in numbers: if num % integer != 0: result.append(num / integer) return result
Vous ne spécifiez pas le format que vous voulez que les nombres retournent, donc je vais supposer que vous le voulez sous forme de liste. Sinon, cela devrait être un changement rapide vers autre chose. Dans ce cas, nous pouvons le définir comme une simple compréhension de liste, où vous cherchez à renvoyer chaque élément en nombres si cet élément ('i') est divisible par votre entier.
[IN] numbers = (20, 35, 61, 80) integers = 10 divisible = tuple_function(numbers, integers) print(divisible) [OUT] [20, 80]
Lorsque vous définissez la fonction de cette façon et que vous l'exécutez, voici vos résultats:
def tuple_function(numbers, integers): return [i for i in numbers if i%integer == 0]
Quelques éléments à surveiller / nettoyer qui peuvent vous aider à vous concentrer sur le problème lui-même au lieu de toute autre erreur que vous pourriez rencontrer:
vous pouvez le faire en une seule doublure:
odd_num(10, *[20, 35, 61, 80]) odd_num(10, *(20, 35, 61, 80))
La *collection
syntax *collection
garantit que l'argument donné est un tuple. Le not _ % divisor
: not _ % divisor
est un raccourci pour prendre le nombre dont le reste de l'opération du module est 0. Appelez-le de cette manière:
odd_num(10, 20, 35, 61, 80)
Ou si vous voulez une liste de passes ou un tuple:
def odd_num(div, *collection) return [_ for _ in collection if not _ % divisor]
Alors, où êtes-vous coincé?
Votre fonction ne renvoie rien; il écrit les nombres sur la sortie standard.
Vous avez passé des
numbers
comme 1er argument et dans votre bloc fonction vous l'affectez à(20, 35,...)
.