In Python, dove finisce il blocco rientrato, è esattamente dove finirà il blocco. Così, per esempio, si consideri un po 'di codice più semplice:
myName = 'Jhon'
if myName == 'Jhon':
print(myName * 5)
else:
print('Hello')
Ora, quando si esegue questo codice (assicuratevi di eseguirlo da un modulo separato, non dal prompt interattivo), verrà stampata 'Jhon' cinque volte (si noti che Python tratterà gli oggetti esattamente come sono specificati, non si preoccuperà nemmeno di provare a convertire il valore della variabile myName
in un numero per la moltiplicazione) e il gioco è fatto. Questo perché il blocco di codice all'interno del blocco if viene eseguito solo. Notare che se la parola chiave else
è stata messa ovunque ma appena sotto l'istruzione if o se si è mescolato l'uso di tabulazioni e spazi, Python avrebbe generato un errore.
Ora, nel codice,
for i in range(0,numClass):
if breaks[i] == 0:
classStart = 0
else:
classStart = dataList.index(breaks[i])
classStart += 1
Sede, dove il trattino blocco di codice for
s' inizia? Una scheda, quindi, ogni voce rientrata di una scheda dopo l'istruzione for
si troverà all'interno del blocco per. Ora, ovviamente, l'istruzione if
si trova all'interno dell'istruzione for
, quindi è all'interno dell'istruzione for
. Passiamo alla riga successiva, classStart = 0
- questo è rientrato di due schede dall'istruzione for
e una scheda dall'istruzione if
; quindi è all'interno della dichiarazione if
e all'interno del blocco per. Riga successiva, una parola chiave else
rientrata è una sola scheda dall'istruzione for
ma non due, quindi è all'interno dell'istruzione for
e non all'interno dell'istruzione if
.
Valutare l'ipotesi di parentesi graffe come questi se si è codificato in un'altra lingua (s) prima:
for i in range(0,numClass)
{
if breaks[i] == 0
{
classStart = 0
}
else
{
classStart = dataList.index(breaks[i])
classStart += 1
}
}
Le semplici differenze sono che non sono tenuti a mettere tra parentesi per le espressioni, a meno che, vuoi per forzare la regola di precedenza dell'operatore e non hai bisogno di quelle parentesi graffe, invece, basta indentarle ugualmente.
Cool, grazie. Puoi anche dirmi cosa significa il doppio asterisco (**) in questa linea? sqDev2 = (classList [j] -classMean) ** 2 – tmighty
significa "power of", equivalente a^in molte lingue. ** 2 (quadrato), ** 3 (cubico) – Jblasco
Significa "potere" o ciò che in alcune lingue è '^' (Python lo utilizza per bit xor bit). –