Quelque chose que je n'ai jamais trouvé une manière concise de faire est de comparer une chaîne avec plusieurs ensembles, ou peut-être un long qui donne une sortie significative. Ceci est mon code actuel:Concision de Python: Comparaison de chaîne à plusieurs ensembles avec valeur de retour
def input():
text = input("Choose a number: ").lower()
if "1" in text or "one" in text: return 1
elif "2" in text or "two" in text: return 2
... and so on...
elif "9" in text or "nine" in text: return 9
else: return 0
Mon but est de le rendre un peu plus concis, compte tenu de la laideur, il est en ce moment.
En outre, un peu d'une étiquette sur la question: est-il plus rapide à faire, ou:
if any(x in text for x in (["1", "one"])): return 1
Lequel est considéré comme plus mainstream?
Désolé; mon Python est vraiment d'entrée de gamme.
--- EDIT ---
Toutes mes excuses pour la confusion; Je voulais dire quelque chose de plus généralisable, comme pour cela:
def input():
text = input("Give an input: ").lower()
if any(x in text for x in (["eggplant", "emoji", "purple"])): return 1
elif any(x in text for x in (["tomato", "red", "tomatina"])): return 2
... and so on...
elif any(x in text for x in (["lettuce", "green", "avatar"])): return 9
else: return 0
Peut-être que regex? En outre, l'entrée peut être seulement un nombre ou un chiffre (pas une "phrase")? pouvez-vous faire ces hypothèses? – Aviad
Désolé, ce n'est pas mon code original; J'ai juste utilisé un format qui exprimait ce que je voulais dire. L'entrée va être une chaîne. Je m'excuse pour mon manque d'expertise en python, mais je ne sais pas vraiment comment utiliser regex; pourriez-vous me donner un petit exemple? – XymphosCraK