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

4

I see a couple of issues:

  1. Indentation of scale = distance / dist_to_origin
  2. math.square_root does not exist, it is math.sqrt

Code:

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
    print point_x * scale, point_y * scale

project_to_distance(2, 7, 4)
于 2013-10-17T15:22:48.883 回答
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模块才能使用高级功能。

  • 我的 square_root 在哪里? math.square_root()不存在-您要调用的函数是math.sqrt().

  • 为什么我得到了SyntaxError: bad input (' ')因为在 Python 中,空格(缩进)被认为是语法的一部分,所以 Python 中的程序总是更容易阅读。您的行scale = distance / dist_to_origin缩进太远,它会混淆 Python 编译器。

  • 为什么最后print改成return_ project_to_distance()这是一个更高的编程概念——早期的练习会教你print如何看到你的结果,但不幸的是它混淆returning了值的主题。通常,您会放在return函数的末尾,因为您并不总是想要打印。例如,math.sqrt()是一个函数,就像project_to_distance(). 只是,它没有print,它计算和returns值。联系project_to_distance()起来sqrt(),你就会明白为什么return更有价值。

  • 为什么要添加print到代码的末尾?因为现在你的函数returns,假设你想要它打印,你必须告诉它。但是现在,当您运行一个程序时,您可以运行project_to_distance它并将其用作以后工作的工具,而不是始终打印的功能。

快乐编码。

奖励:这是一个很棒的 Python 教程

于 2013-10-17T15:31:46.520 回答
1

It works fine for me when I write the following :

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)

Do not intent scale.

于 2013-10-17T15:22:23.053 回答