2012-11-26 67 views
0

我正在學習python我不明白這段代碼做了什麼,它給出了一個意想不到的輸出。任何人都可以請解釋這一點。python富有成果的功能解釋

#! /usr/bin/python 


dx = int(raw_input("ENTER THE VALUE dx:")) 
dy = int(raw_input("ENTER THE VALUE dy:")) 

def distance(x1, y1, x2, y2): 
    dx = x2 - x1 
    dy = y2 - y1 
    print "dx is", dx 
    print "dy is", dy 
    return 0.0 

print distance 

謝謝。

+1

這是錯誤的/不完整的。函數的打印必須具有參數(...),以及從哪裏獲取x和y的? –

回答

1

它什麼都不做,因爲你永遠不會調用這個函數。它只會打印函數定義的內存地址,這不是很有用。

如果你做了print distance(),至少可以調用它,它會打印dx和dy,但是也打印0.0 - 因爲這就是你從函數返回的內容。

0

你期望它做什麼?

我假定是指調用函數,例如print distance(x1, x2, y1, y2),但這隻會導致0.0,因爲這是您返回的值。您似乎還要求用戶提供答案(即dxdy),而您需要x1, x2, y1, y2作爲該功能。沒有正是你所期望的瞭解,這裏是一些代碼,可能會做你想要什麼:

def distance(x1, y1, x2, y2): 
    dx = x2 - x1 
    dy = y2 - y1 
    print "dx is", dx 
    print "dy is", dy 

x1 = int(raw_input("ENTER THE VALUE x1:")) 
x2 = int(raw_input("ENTER THE VALUE x2:")) 
y1 = int(raw_input("ENTER THE VALUE y1:")) 
y2 = int(raw_input("ENTER THE VALUE y2:")) 

distance(x1, x2, y1, y2) 
0

好了,前兩行的代碼讀出兩個值,dxdy。接下來定義一個函數,其目的是計算(可能打印和返回)兩點x1,y1和x2,y2的距離,但是它總是返回0.0

在最後的聲明中,您是可能缺少圓括號,因爲 print distance所做的是在函數對象上打印一些信息,如<function distance at 0xZZZZZZZZZ>

富有成果的函數是一個返回值,那麼很可能,你想要做的是以下幾點:

px1 = int(raw_input("X1:")) 
py1 = int(raw_input("Y1:")) 
px2 = int(raw_input("X2:")) 
py2 = int(raw_input("Y2:")) 

def distance(x1,y1,x2,y2): 
    dx = x2 - x1 
    dy = y2 - y1 
    return dx, dy # return a tuple with the first element being dx and the second dy 

print distance(px1,py1,px2,py2) 

,我改變了輸入變量的名稱,以便函數功能更加清晰。

簡短回答:「卓有成效」的功能會返回一個值,您可以使用