Trong Python, nơi khối thụt lề của bạn kết thúc, đó chính là nơi khối của bạn sẽ kết thúc. Vì vậy, ví dụ, hãy xem xét một chút đoạn code đơn giản:
myName = 'Jhon'
if myName == 'Jhon':
print(myName * 5)
else:
print('Hello')
Bây giờ, khi bạn chạy mã này (hãy chắc chắn để chạy nó từ một module riêng biệt, chứ không phải từ dấu nhắc tương tác), nó sẽ in 'Jhon' lăm thời gian (lưu ý rằng Python sẽ xử lý các đối tượng chính xác như chúng được chỉ định, nó thậm chí sẽ không bận tâm để cố gắng chuyển đổi giá trị biến của myName
thành một số cho phép nhân) và đó là nó. Điều này là do khối mã bên trong khối if chỉ được thực thi. Lưu ý rằng nếu từ khóa else
được đặt ở bất kỳ đâu nhưng ngay bên dưới câu lệnh if hoặc nếu bạn đã trộn lẫn việc sử dụng các tab và dấu cách, Python sẽ gây ra lỗi.
Bây giờ, trong mã của bạn,
for i in range(0,numClass):
if breaks[i] == 0:
classStart = 0
else:
classStart = dataList.index(breaks[i])
classStart += 1
Xem, nơi thụt lề của khối mã for
's bắt đầu? Một tab, vì vậy, mọi thứ thụt lề một tab sau câu lệnh for
, sẽ nằm bên trong khối. Bây giờ, hiển nhiên, câu lệnh if
nằm bên trong câu lệnh for
, vì vậy nó nằm trong câu lệnh for
. Bây giờ, chúng ta hãy chuyển sang dòng tiếp theo, classStart = 0
- điều này được thụt lề hai tab từ câu lệnh for
và một tab từ câu lệnh if
; do đó, nó nằm trong bảng kê if
và bên trong khối. Dòng tiếp theo, bạn có một từ khóa else
thụt vào chỉ một tab từ câu lệnh for
chứ không phải hai tab, do đó, nó nằm trong câu lệnh for
và không phải bên trong câu lệnh if
.
Cân nhắc đặt xoăn-niềng răng như thế này nếu bạn đã được mã hóa bằng ngôn ngữ khác (s) trước:
for i in range(0,numClass)
{
if breaks[i] == 0
{
classStart = 0
}
else
{
classStart = dataList.index(breaks[i])
classStart += 1
}
}
Sự khác biệt đơn giản là bạn không cần phải đặt dấu ngoặc cho các biểu thức của bạn, trừ khi, bạn muốn để ép buộc quy tắc ưu tiên toán tử và bạn không cần các dấu ngoặc nhọn đó, thay vào đó, chỉ cần thụt lề chúng bằng nhau.
Tuyệt vời, cảm ơn bạn. Bạn cũng có thể cho tôi biết dấu sao đôi (**) có nghĩa là gì trong dòng này không? sqDev2 = (classList [j] -classMean) ** 2 – tmighty
có nghĩa là "sức mạnh của", tương đương với^trong nhiều ngôn ngữ. ** 2 (bình phương), ** 3 (khối) – Jblasco
Nó có nghĩa là "sức mạnh", hoặc cái gì đó trong một số ngôn ngữ là '^' (Python sử dụng nó cho bitwise xor). –