0

我正在学习 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

谢谢你。

4

3 回答 3

1

它没有做任何事情,因为您从不调用该函数。它只会打印函数定义的内存地址,这不是很有用。

如果你这样做了print distance(),你至少会调用它,它会打印 dx 和 dy,但也会打印 0.0 - 因为这就是你从函数返回的内容。

于 2012-11-26T12:57:01.400 回答
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)
于 2012-11-26T12:59:06.250 回答
0

好吧,前 2 行代码读取了两个值,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)

我更改了输入变量的名称,以便函数的作用更加清晰。

简短回答:“富有成效”的函数返回一个您可以使用的值

于 2012-11-26T13:00:23.157 回答