【问题标题】:Python: "SyntaxError: invalid syntax" for arithmeticPython:算术的“SyntaxError:无效语法”
【发布时间】:2015-07-23 08:15:17
【问题描述】:

这是我关于堆栈溢出的第一个问题,请评论我如何改进提问。

这就是我觉得我的代码的相关部分。

#import libraries
from numpy import *
from matplotlib.pyplot import *

#leapfrog method
def orbit(m1=1.0e30, m2=1.0e24, a=1.0e11, e=0.1):

    #conditions
    G=6.67*e-11
    q=m1/m2
    m=m1+m2
    r0=(1-e)*a/(1+q)
    v0=1/(1+q)sqrt((1+e)/(1-e)*G*m/a)

当我导入我的代码时,我收到一个错误:

import hw5redo
  File "hw5redo.py", line 12
    r0 = (1-e)*a/(1+q)
                   ^
SyntaxError: invalid syntax

当我从我收到的代码中注释掉它时:

import hw5redo
  File "hw5redo.py", line 12
    #r0=(1-e)*a/(1+q)
                 ^
SyntaxError: invalid syntax

我认为 cmets 甚至不应该被视为 syntaxErrors,因为它们仅供用户使用。

【问题讨论】:

  • 您的代码开头似乎有一些不可打印的字符(您可以在此处单击帖子上的“编辑”时查看它们的显示方式)。确保您的 .py 文件仅包含带有代码的文本。
  • 关于如何提问,我推荐StackOverflow高手的帖子:blogs.msmvps.com/jonskeet/2010/08/29/…
  • (1+q)sqrt(..) 不是有效的 Python 代码。应该是(1+q)*sqrt(..)

标签: python-2.7 syntax-error


【解决方案1】:

@rth 是对的,请检查下面的代码,你应该在 sqrt 函数之前使用 *:

def orbit(m1=1.0e30, m2=1.0e24, a=1.0e11, e=0.1):

    G = 6.67 * e - 11
    q = m1 / m2
    m = m1 + m2
    r0 = (1 - e) * a / (1 + q)
    value = (1 + e) / (1 - e) * G * m / a
    # Note that value is negative in this case, and it will raise a warning
    print value
    v0 = 1 / (1 + q) * sqrt(value)

希望代码对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 2016-08-20
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多