0
votes

fonction isprime dans une ligne

bon après-midi. Je dois écrire des chiffres dans une ligne et des résultats d'impression également en une seule ligne. Qu'est-ce que je dois faire pour corriger ce code? Au moment du code travaillant uniquement pour un numéro.

def test_prime(n):
    if (n==1):
        return False
    elif (n==2):
        return True;
    else:
        for x in range(2,n):
            if(n % x==0):
                return False
        return True   


2 commentaires

Voulez-vous prendre des informations d'utilisateur?


Si c'est une fonction n'oublie pas les virgules entre les arguments


5 Réponses :


0
votes

Vous auriez besoin d'écrire une fonction is_prime code> qui appellera la fonction test_prime code> pour chaque numéro de la chaîne que vous entrez, calcule si elle est prime ou non et retourne La chaîne résultante.

Input numbers>>3 4 5
True False True


6 commentaires

Je dois écrire des chiffres de la liste sans virgule (2 3 4 5 6 7 8) en une seule ligne, et la ligne suivante est la fonction d'impression (vrai Faux Faux Faux Faux Faux). Deux lignes, chiffres de première ligne, impression de deuxième ligne.


Ecrire où? À un fichier texte?


J'ai mis à jour pour écrire les deux en une ligne! Vérifiez s'il vous plaît!


Quel est le module exécuter la fenêtre?


Vérifiez s'il vous plaît, je n'ai pas travaillé, nom 's' n'est pas défini, et sans que S = entrée, le programm indique (nums = [int (n) pour N dans S.Split ()] AttributeError: l'objet 'int' n'a pas de Attribut 'Split'))


Mis à jour, vérifiez à nouveau! Il suffit de copier tout le code tel qu'il est, exécutez-le et il devrait fonctionner!



1
votes

Si vous avez une liste de nombres comme ceci: xxx pré>

Vous pouvez utiliser mapper () code> pour appliquer votre test_prime () code> fonction à chaque valeur dans la liste: p> xxx pré>

et d'imprimer le résultat sur une ligne sans virgules / crochets: P>

>>> numbers = input().split()
1 2 3 4 5
>>> numbers
['1', '2', '3', '4', '5']


0 commentaires

0
votes

Pour imprimer en une seule ligne, utilisez simplement

results = [test_prime(i) for i in range(10)]
print(', '.join(results))


0 commentaires

0
votes
>>> [print(i,test_prime(i),end=', ') for i in (1,2,3,4,5,6,10,100,1000,1013)]
1 False, 2 True, 3 True, 4 False, 5 True, 6 False, 10 False, 100 False, 1000 False, 1013 True,

0 commentaires

1
votes
is_prime = lambda n: not any(n % i == 0 for i in range(2, n))
print([f'{i}: {is_prime(i)}' for i in range(1, 100)])
Note
any is lazy, it will not iterate the whole range unless needed
you can change the range to range(2, n**0.5) it you care about speed

4 commentaires

Comment cela imprime-t-il tous les résultats en une seule ligne?


@Barmar: La question n'est pas claire à ce sujet, tout ce qu'il montre est le is_prime Définition


Il est dit "Je dois écrire des chiffres dans une ligne et des résultats d'impression également en une seule ligne." Ce n'est pas clair à ce sujet?


Vous devez expliquer @Blue_note