简单的Python语法错误(缩进/空白)

时间:2013-10-17 15:20:04

标签: python syntax whitespace indentation

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 ('        ')

3 个答案:

答案 0 :(得分:4)

我看到了几个问题:

  1. 缩进scale = distance / dist_to_origin
  2. math.square_root不存在,只有math.sqrt
  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
        print point_x * scale, point_y * scale
    
    project_to_distance(2, 7, 4)
    

答案 1 :(得分: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并在以后的工作中将其用作工具,而不是始终打印的功能。

快乐的编码。

奖金:Here is an amazing Python tutorial

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

不要意图扩展。