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

コードの最初の 2 行は 2 つの値を読み取りdxdy. 次に、x1,y1 と x2,y2 の 2 点の距離を計算する (おそらく出力して返す) 関数を定義しますが、常に 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 に答える
0

あなたはそれが何をすることを期待していますか?

たとえば、関数を呼び出すことを意味すると思いますが、それが返される値であるprint distance(x1, x2, y1, y2)ため、これは単に結果になります。また、関数が必要なのに対し0.0、ユーザーに回答(つまりdxと)を求めているようです。あなたが期待していることを正確に知らなくても、あなたが望むことをするかもしれないいくつかのコードがあります:dyx1, 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 に答える