Python Carrés Fonction
Je suis en train d'écrire une fonction qui renvoie la liste des nombres carrés, mais sera de retour une liste vide si la fonction prend en paramètre ('pomme') ou (range(10)) ou une liste. J'ai la première partie, mais ne peut pas comprendre comment retourner l'ensemble vide si le paramètre n est pas un entier, je reçois un message d'erreur: unorderable types: str() > int()
Je comprends qu'une chaîne de caractères ne peut pas être comparé à un entier, mais j'en ai besoin pour revenir à la liste vide.
def square(n):
return n**2
def Squares(n):
if n>0:
mapResult=map(square,range(1,n+1))
squareList=(list(mapResult))
else:
squareList=[]
return squareList
Quelle est l'erreur que vous obtenez?
Ma conjecture est que vous voulez un
Vous n'avez pas besoin d'utiliser
sinon ...si vous insistez sur l'utilisez pas une compréhension de liste
Ma conjecture est que vous voulez un
try...except
bloc.Vous n'avez pas besoin d'utiliser
map
, et vous n'avez pas besoin de définir une fonction d'assistance square
. Utiliser une liste de compréhension: [nn**2 for nn in n]
sinon ...si vous insistez sur l'utilisez pas une compréhension de liste
map(lambda x: x**2, ...)
OriginalL'auteur user2553807 | 2013-07-06
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
type
fonction en python pour vérifier quel type de données d'une variable. Pour ce faire, vous utiliseztype(n) is int
pour vérifier sin
est le type de données que vous voulez. Aussi,map
déjà renvoie une liste, donc il n'est pas nécessaire pour le casting. Donc...isinstance
est mieux. Il gère l'héritage.OriginalL'auteur Matias Grioni
Vous pouvez la chaîne de toutes les conditions qui résultat en retournant une liste vide dans un conditionnelle à l'aide de
or
'. j'.e si c'est une liste, ou est égal à'apple'
, ou est égal àrange(10)
oun < 0
puis renvoyer une liste vide. D'AUTRE le retour de la mapResult.isinstance
vérifie sin
est une instance delist
.Certains cas de test:
Obtient
à partir de l'expérimentation est semble comme ils le font:
>>> range(1,10) == range(1,10) True >>> range(1,10) == range(1,9) False
. Cependant la lecture de mail.python.org/pipermail/python-3000/2008-April/013000.html il semble qu'ils ne pourraient pas?OriginalL'auteur HennyH
Vous ne pouvez pas comparer des chaînes de caractères en nombres entiers que vous avez essayé de faire. Si vous voulez vérifier si
n
est un entier ou pas, vous pouvez utiliserisinstance()
:Maintenant, si une chaîne ou une liste est donnée comme argument, la fonction va retourner immédiatement une liste vide
[]
. Si non, alors il continuera à fonctionner normalement.Quelques exemples:
Sera de retour:
OriginalL'auteur TerryA