7
votes

Python - simulant "sinon" dans les relevés de changement de dictionnaire

Je travaille sur un projet qui a utilisé une charge de si, elif, elif, ... d'autre structures, que j'ai ensuite changées pour des déclarations de type commutateur, comme indiqué ici et ici .

Comment puis-je contribuer à ajouter un général "Hey, cette option n'existe pas" cas semblable à un autre dans un si, elif, sinif, sinon déclaration - quelque chose qui est exécuté si aucun de la si s ou elif s faire fonctionner?


0 commentaires

5 Réponses :


7
votes

Vous pouvez attraper l'erreur KeyError qui s'ensuit lorsqu'une valeur n'est introuvable sur la carte et de retourner ou de traiter une valeur par défaut. Par exemple, avec n = 3 Ce morceau de code: xxx

devient ceci: xxx

, 'trop grand!' est imprimé sur la console.


2 commentaires

Ah, si simple, comment je ne l'ai pas vu en premier lieu! Merci quand même, je suis sûr que quelqu'un d'autre pourrait avoir de l'aide aussi: p


Oh bien sûr. Permettez-moi de l'essayer en premier - je suis un seul homme! : P



9
votes

Si l'autre n'est vraiment pas une situation exceptionnelle, ne serait-il pas préférable d'utiliser le paramètre facultatif pour obtenir?

>>> choices = {1:'one', 2:'two'}
>>> print choices.get(n, 'too big!')

>>> n = 1
>>> print choices.get(n, 'too big!')
one

>>> n = 5
>>> print choices.get(n, 'too big!')
too big!


0 commentaires

2
votes

the premier article que vous avez lié à avoir eu Une solution très propre: xxx

Ceci appellera prévenir_horrible_crash si réponse n'est pas l'un des trois choix énumérés dans Response_map < / code>.


0 commentaires

1
votes

Disons que vous avez une fonction F (A, B) et des configurations différentes de paramètres en fonction de la valeur de certaines variables x. Donc, vous voulez exécuter F avec a = 1 et b = 3 si x = 'lundi' et si x = 'samedi' vous voulez exécuter f avec A = 5 et B = 9. Sinon, vous imprimerez que cette valeur de x n'est pas prise en charge.

je ferais xxx

de cette manière f n'est pas exécuté sur la déclaration de commutateur mais à la dernière ligne.


0 commentaires

0
votes

Quelques alternatives d'une ligne:

choices = {1:'one', 2:'two'}
key = 3

# returns the provided default value if the key is not in the dictionary
print(choices[key] if key in choices else 'default_value')

# or using the dictionary get() method
print(choices.get(key, 'default_value')


0 commentaires