J'ai le code suivant:
for i in range(0,numClass):
if breaks[i] == 0:
classStart = 0
else:
classStart = dataList.index(breaks[i])
classStart += 1
classEnd = dataList.index(breaks[i+1])
classList = dataList[classStart:classEnd+1]
classMean = sum(classList)/len(classList)
print classMean
preSDCM = 0.0
for j in range(0,len(classList)):
sqDev2 = (classList[j] - classMean)**2
preSDCM += sqDev2
SDCM += preSDCM
return (SDAM - SDCM)/SDAM
Je voudrais convertir ce code en VB.NET.
Mais je ne sais pas où se termine l'instruction if-elseif. Se termine-t-il après "classStart + = 1"?
Je pense qu'il est un peu difficile de voir où se terminent également les boucles for-next en Python.
Le code est tiré de http://danieljlewis.org/files/2010/06/Jenks.pdf
Je vous remercie.
Oui. Python utilise l'indentation pour marquer les blocs. Le if
et le for
s'arrêtent là.
En Python, où se termine votre bloc en retrait, c'est exactement là où se terminera votre bloc. Par exemple, considérons un code un peu plus simple:
myName = 'Jhon'
if myName == 'Jhon':
print(myName * 5)
else:
print('Hello')
Maintenant, lorsque vous exécutez ce code (assurez-vous de l'exécuter à partir d'un module distinct, pas à partir de l'invite interactive), il affichera 'Jhon' cinq fois (notez que Python traitera les objets exactement comme ils sont spécifiés, cela ne prendra même pas la peine d'essayer de convertir la valeur de la variable myName
en un nombre à multiplier) et c'est tout. C'est parce que le bloc de code à l'intérieur du bloc if n'est exécuté que. Notez que si le mot clé else
a été placé n'importe où mais juste en dessous de l'instruction if ou si vous avez mélangé l'utilisation des tabulations et des espaces, Python déclencherait une erreur.
Maintenant, dans votre code,
for i in range(0,numClass):
if breaks[i] == 0:
classStart = 0
else:
classStart = dataList.index(breaks[i])
classStart += 1
Vous voyez, où commence le retrait du bloc de code de for
? Un onglet, donc, tout en retrait d'un onglet après l'instruction for
, sera à l'intérieur du bloc for. Maintenant, évidemment, l'instruction if
est à l'intérieur de l'instruction for
, donc elle est à l'intérieur de l'instruction for
. Passons maintenant à la ligne suivante, classStart = 0
- il s'agit de deux onglets en retrait de l'instruction for
et d'un onglet de l'instruction if
; il est donc à l'intérieur de l'instruction if
et à l'intérieur du bloc for. À la ligne suivante, vous avez un mot clé else
en retrait d'un seul onglet de l'instruction for
mais pas de deux onglets, il se trouve donc à l'intérieur de l'instruction for
et pas à l'intérieur de l'instruction if
.
Pensez à mettre des accolades comme celles-ci si vous avez déjà codé dans une autre langue:
for i in range(0,numClass)
{
if breaks[i] == 0
{
classStart = 0
}
else
{
classStart = dataList.index(breaks[i])
classStart += 1
}
}
Les différences simples sont que vous n'êtes pas obligé de mettre des parenthèses pour vos expressions, sauf si vous voulez forcer la règle de priorité des opérateurs et que vous n'avez pas besoin de ces accolades, au lieu de cela, indiquez-les simplement de la même manière.