我正在学习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
谢谢。
答案 0 :(得分:1)
它没有做任何事情,因为你从不调用该函数。它只会打印函数定义的内存地址,这不是很有用。
如果你做了print distance()
,你至少会打电话给它,它会打印dx和dy,但也会打印0.0 - 因为这就是你从函数返回的内容。
答案 1 :(得分:0)
您期望它做什么?
我假设要调用该函数,例如print distance(x1, x2, y1, y2)
,但这只会导致0.0
,因为这是您要返回的值。您似乎也在向用户询问答案(例如dx
和dy
),而您需要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)
答案 2 :(得分:0)
嗯,前两行代码读取了两个值,dx
和dy
。接下来,您定义一个函数,其目的是计算(并可能打印并返回)两个点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)
我更改了输入变量的名称,以便该函数的功能更加清晰。
简短回答:“富有成效”的函数会返回一个可以使用的值