0
def project_to_distance(point_x, point_y, distance):
    dist_to_origin = math.square_root(point_x ** 2 + point_y ** 2)    
        scale = distance / dist_to_origin
    print point_x * scale, point_y * scale

project_to_distance(2, 7, 4)

スケール ラインに次のエラーが表示されます (以下を参照)。誰がこれが何に関係するのか教えてもらえますか?

SyntaxError: bad input ('        ')
4

3 に答える 3

3

コードにはいくつかの問題があります。

これが私があなたに提供した改訂されたコードです:

import math

def project_to_distance(point_x, point_y, distance):
    dist_to_origin = math.sqrt(point_x ** 2 + point_y ** 2)    
    scale = distance / dist_to_origin
    return point_x * scale, point_y * scale

print project_to_distance(2, 7, 4)
  • 「インポート数学」が含まれているのはなぜですか? インポートについて知らない場合は、math高度な機能を使用するためにモジュールを含める必要があります。

  • 私の平方根はどこですか? math.square_root()存在しません - 呼び出す関数は ですmath.sqrt()

  • なぜ私は得たのSyntaxError: bad input (' ')ですか?Python では、空白 (インデント) は構文の一部と見なされるため、Python のプログラムは常に読みやすくなっています。行がscale = distance / dist_to_originインデントされすぎているため、Python コンパイラが混乱します。

  • の最後になぜ に変わっprintたのですか? returnproject_to_distance()これは高度なプログラミングの概念です。初期の演習でprintは、結果を確認できるように教えられますが、残念ながらreturning、値の主題を混乱させます。通常、常に印刷したいreturnわけではないため、関数の最後に配置します。たとえば、は のような関数です。しかたなく、計算して値を出す。に関連すると、なぜより価値があるのか​​ が理解できます。math.sqrt()project_to_distance()printreturnsproject_to_distance()sqrt()return

  • なぜprintコードの最後に追加したのですか? あなたの関数returnsは、あなたがそれを印刷したいと仮定すると、あなたはそれを伝える必要があるからです。しかし今では、プログラムを実行するproject_to_distanceと、常に出力する関数ではなく、後の作業のツールとして実行して使用できます。

ハッピーコーディング。

おまけ:これはすばらしい Python チュートリアルです

于 2013-10-17T15:31:46.520 に答える
1

次のように書くとうまくいきます:

def project_to_distance(point_x, point_y, distance):
    dist_to_origin = math.sqrt(point_x ** 2 + point_y ** 2)    
    scale = distance / dist_to_origin
    print point_x * scale, point_y * scale

project_to_distance(2, 7, 4)

スケーリングを意図しないでください。

于 2013-10-17T15:22:23.053 に答える