2013-05-26 46 views
-1

當我刪除「通行證」命令並保留類空白,則顯示錯誤:爲什麼我不能離開類空白

File "class_distance.py", line 6 
    point1=distance() 
     ^
IndentationError: expected an indented block 

代碼預計兩點之間計算距離。 這裏是代碼:

import math 
class distance(object): 
    pass 


point1=distance() 
point2=distance() 
point1.x=input("x=") 
point2.x=input("x=") 
point1.y=input("y=") 
point2.y=input("y=") 


def main(point1,point2): 


    dx = point1.x - point2.x 
    dy = point1.y - point2.y 
    dist = math.sqrt(dx**2 + dy**2) 
    print dist 

main(point1,point2) 
+0

我知道這很簡單,但我找不到任何滿意的答案。我是編程新手 –

回答

0

類必須有一個機構。所以當你刪除pass時,它會將下一個語句作爲body來搜索,但是因爲它與你的類定​​義在同一級別上,所以Python說有一個IndentationError。

4

當您用冒號結尾一行時,您聲明瞭一個複合語句:Python期望在該語句後面有一段代碼。 pass關鍵字是你說你還不想進入該塊的方式。

由於Python中空格的使用方式非常重要,因此不允許空語句使得代碼更具可讀性並且更易於解析:在冒號之後,預計會有縮進塊,如果沒有,則是錯誤,故事結束。

編輯:順便說一句,如果你想知道,你在下面的語句得到一個IndentationError,而不是在class聲明,因爲Python認爲是類聲明的身體,它希望正確縮進。

2

這是因爲Python期待類主體它看到

class distance(object): 

特別是我們要縮進的下一行,鍵入類的身體結腸信號之後。但是,如果我們不縮進並且繼續編程,Python將會變得不安,並抱怨我們跳過了類體。

爲了允許空白塊,有一個關鍵字pass,它基本上充當佔位符,用於類或函數或通常會去的地方。

class distance(object): 
    pass # Let's python know we didn't forget the class body 
keep.on.programming() 
0

在Python代碼塊必須包含一些代碼,所以如果你不想讓它做什麼,你必須把pass。因此IndentationError

相關問題