Suite

L'instruction If-Then-Else dans ModelBuilder a une syntaxe incorrecte


J'ai un modèle qui convertit un réseau routier en un schéma différent pour un programme différent. Dans une étape du modèle, je convertis les valeurs d'un champ "Classe". J'ai écrit une instruction If-Then-Else en Python mais ma syntaxe est désactivée. Voici le code :

def gst(old_value): if old_value == 'P00': return A91: elif old_value == 'P09': return A91: elif old_value == 'P01': return A89: elif old_value == 'P02': return A90: elif old_value == 'P03': return A90: elif old_value == 'P04': return A40: elif old_value == 'P05': return A40: elif old_value == 'P06': return A40: elif old_value == 'P10 ': return A40: elif old_value == 'P11': return A40:

J'obtiens une erreur de syntaxe de la ligne 3 dans ArcMap (Erreur 000989). Je ne sais pas si j'ai besoin de guillemets doubles autour de mes valeurs ou non ou si je termine l'expression correctement. Quelqu'un peut-il m'aider à résoudre les problèmes dans mon code ?


Sur votre déclaration de retour, supprimez les deux points à la fin. c'est à dire.:

def gst(old_value): if old_value == 'P00': return A91

De plus, si A91 n'est pas une variable existante et que vous souhaitez l'avoir sous forme de chaîne, vous devez la mettre entre guillemets -> 'A91'


Au lieu d'utiliser tous cessi… elifdéclarations, vous trouverez peut-être plus facile d'utiliser un dictionnaire :

def gst(old_value): ancien = ['P00', 'P09', 'P01', 'P02', 'P03', 'P04', 'P05', 'P06', 'P10', 'P11'] nouveau = ['A91', 'A91', 'A89', 'A90', 'A90', 'A40', 'A40', 'A40', 'A40', 'A40'] return dict(zip(old, new )).get(ancienne_valeur)


Voir la vidéo: Excel VBA and Macros - Chapter 17 - If..Then..Else statement to decision making @EXCELeINFO (Octobre 2021).