Python: d'Où vient-si-endif-déclaration de fin?
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 le convertir ce code VB.NET.
Mais je ne suis pas sûr de l'endroit où l'if-elseif-déclaration se termine.
Il se termine après "classStart += 1"?
Je me sens un peu de mal à voir où le pour-prochain-boucles fin ainsi en Python.
Le code est pris de http://danieljlewis.org/files/2010/06/Jenks.pdf
Merci.
OriginalL'auteur tmighty | 2013-10-17
Vous devez vous connecter pour publier un commentaire.
Oui. Python utilise l'indentation pour marquer les blocs. À la fois le
if
et lafor
fin.signifie "pouvoir de", équivalent à ^ dans de nombreuses langues. **2 (au carré), **3 (cube)
Il signifie "pouvoir", ou que dans certaines langues, est
^
(Python qui utilise pour xor au niveau du bit).OriginalL'auteur Daniel Roseman
En Python, où votre retrait bloc se termine, c'est exactement où votre bloc à la fin. Ainsi, par exemple, considérez un peu plus simple de code:
Maintenant, lorsque vous exécutez ce code (assurez-vous d'exécuter à partir d'un module séparé, non pas à partir de l'invite de commandes), il aura l'impression de "Jhon" cinq fois (à noter que Python va traiter les objets exactement comme ils sont spécifiés, il ne sera même pas la peine d'essayer de convertir la variable
myName
's de la valeur à un certain nombre de multiplication) et c'est tout. C'est parce que le bloc de code à l'intérieur de la si le bloc est exécuté seulement. Notez que si leelse
mot-clé a été mis n'importe où, mais juste en dessous de l'instruction if ou si vous avez eu mixte de l'utilisation des tabulations et des espaces, Python permettrait de lever une erreur.Maintenant, dans votre code,
Voir, où le retrait de
for
's bloc de code commence? Un onglet, donc, tout est mis en retrait d'un onglet après lafor
déclaration, sera à l'intérieur du bloc. Maintenant, évidemment, laif
déclaration est à l'intérieur de lafor
déclaration, il est donc à l'intérieur de lafor
déclaration. Maintenant, nous allons passer à la ligne suivante,classStart = 0
-- c'est en retrait de deux onglets de lafor
instruction et un onglet à partir de laif
déclaration; c'est donc à l'intérieur de laif
déclaration et à l'intérieur du bloc. Ligne, vous avez unelse
mot-clé en retrait juste un onglet à partir de lafor
déclaration, mais pas deux pattes, c'est donc à l'intérieur de lafor
déclaration, et pas à l'intérieur de laif
déclaration.Envisager de mettre bouclés-accolades comme ces si vous avez codé dans une autre langue(s) avant:
Les simples différences sont que vous n'êtes pas obligé de mettre entre parenthèses pour vos expressions, à moins que, vous voulez forcer la priorité de l'opérateur règle et vous n'avez pas besoin de ces accolades, au lieu de cela, juste en retrait de manière égale.
OriginalL'auteur Akshat Tripathi