[PYTHON] À propos de l'instruction if à 2 variables et 4 branches

Lorsque les variables min_value et max_value existent, je souhaite modifier le traitement en fonction de chaque condition

Par exemple ...

min_value max_value En traitement
null null ne fais rien
null not null Vérifiez qu'il est inférieur à la limite supérieure
not null null Vérifiez qu'il est supérieur à la limite inférieure
not null not null Vérifiez qu'il est à portée

Habituellement comme ça

Main.java



class Main {
    
    public static void main(String[] args) {
        
    }

    private static String hoge(int value, Integer min_value, Integer max_value) {
        if (min_value == null && max_value == null) {
            //ne fais rien
            return "";
        }
        if (min_value == null) {
            //Vérification de la limite supérieure
            return "";
        }
        if (max_value == null) {
            //Vérification de la limite inférieure
            return "";
        }
        //Vérification de la portée
        return "";
    }

}

――C'est difficile à comprendre à première vue --Il existe un cas et quatre cas de comparaison, et la vitesse varie en fonction des données.

Je veux résoudre ça d'une manière ou d'une autre ...

main.swift


func hoge(_ value: Int, _ min_value: Int?, _ max_value: Int?) -> String {
    //Facultatif ne se détache pas
    switch(min_value != nil, max_value != nil) {
        case (true,  true):
            return ""   //Vérification de la portée
        case (true,  false):
            return ""   //Vérification de la limite supérieure
        case (false, true): 
            return ""   //Vérification de la limite inférieure
        case (false, false):
            return ""   //ne fais rien
    }
}

Pour Pytyon3

main.py


def hoge(value, min_value, max_value):
    command = {
        (True, True): lambda: "",    #Vérification de la portée
        (True, False): lambda: "",   #Vérification de la limite inférieure
        (False, True): lambda: "",   #Vérification de la limite supérieure
        (False, False): lambda: "",  #ne fais rien
    }
    
    return command[(min_value is not None, max_value is not None)]()

S'il y a un meilleur moyen, faites-le moi savoir.

Recommended Posts

À propos de l'instruction if à 2 variables et 4 branches
À propos de la portée des variables. .. ..
Instruction if peu familière
À propos de la variable du chainer
Instruction if de base Python
Julia Quick Note [05] instruction if
Ajouter avec Python if instruction
[python] Utilisation correcte de l'instruction if
[Python] Opération de fichier utilisant l'instruction if
[Super Basic] Comparez Python, Java et JavaScript (variables, instructions if, instructions while, pour les instructions)