2017-10-08 3 views
-3

Je veux écrire une méthode que je peux utiliser avec des chaînes même que nous utilisons "word".isupper retour False, « mot » .islower retour True, donc je veux définir une classe et que vous souhaitez utiliser comme "word".isspecial()Comment écrire une méthode comme islower, isupper?

si i une liste de caractères spéciaux:

special=["&","*",")("] 

et je veux que si j'ai un mot que je peux vérifier comme «) (» méthode (.) et il retourne vrai que nous faisons avec .islower « string »() qui est vrai retour

Je sais que je peux le faire avec simple boucle et l'opérateur in mais je veux savoir comment je peux faire comme ")(".method()

Ce que j'ai essayé est bogué:

class Lower: 

    def check(self,x): 
     for i in lower: 
      if x==i: 
       return True 

check1=Lower() 

check1.check() 

print(check1.check(special,")(")) 
+2

est un euphémisme ... quels sont exactement vos problèmes? –

+0

Vous aurez besoin de sous-classe 'str'. –

+3

Je ne vois pas pourquoi cela doit être une méthode plutôt qu'une fonction. Est-ce une exigence ou était-ce votre décision? –

Répondre

0

Vous pouvez écrire une fonction pour faire ce que vous voulez comme ceci:

import string 

special_set = set(string.punctuation) 

def isspecial(s): 
    return all(c in special_set for c in s) 

print(isspecial(")(")) 
print(isspecial(")(*)(&)(*&)*&")) 
print(isspecial(")(*)(&)(*&)*&x")) 

Affichera, comme prévu:

True 
True 
False 

Remarque J'ai utilisé string.punctuation pour construire l'ensemble des "caractères spéciaux". Vous pouvez définir cet ensemble à la main si vous le souhaitez.

Vraiment, c'est la façon Pythonic faire ce que vous voulez - il n'y a aucune raison d'avoir une méthode faire. Si vous insistez vraiment, vous pouvez regarder la question this pour plus d'informations, mais attention, cela deviendra salissant.

poussette