-1
votes

Comment diviser uniformément un tuple contre un entier dans un deuxième argument en python?

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)


3 commentaires

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,...) .


4 Réponses :


2
votes
def tuple_function(numbers, divisor):
    return [i for i in numbers if i % divisor]

0 commentaires

0
votes

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


0 commentaires

1
votes

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:

  1. Ne définissez pas vos arguments dans votre fonction
  2. Vous avez des 'entiers' au lieu d'un entier sur la troisième ligne
  3. N'oubliez pas votre point-virgule après votre instruction if sur l'avant-dernière ligne.
  4. Dans cette instruction if, rappelez-vous que vous avez défini i comme «i en nombres». Cela signifie que je représenterai l'élément du tuple lui-même et non l'index, donc vous avez juste besoin de «i» dans votre dernière ligne et non de «nombres [je]'


0 commentaires

0
votes

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]


0 commentaires