python丰富的功能说明

时间:2012-11-26 12:51:19

标签: python function

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

谢谢。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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)

答案 2 :(得分: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)

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

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