【问题标题】:Why invalid syntax (<string>, line 24)?为什么语法无效(<string>,第 24 行)?
【发布时间】:2018-03-14 16:23:21
【问题描述】:

Python 的超级新手,我就是不知道是什么导致了我的代码中的错误消息...

It says '[pylint] E0001:invalid syntax (<string>, line 24)'.

谁能解释我在这里缺少什么?

非常感谢!

#########################################
# Draws a mario-style right-side-aligned half pyramid 
# of the requested height.
# Restriction: 0 < height < 23
##########################################

while True:
    height = int(input("Height: "))
    if height > 0 and height < 23:
        break
    elif height == 0:
        print()
        print()
        print()
        print("I have drawn a pyramid with a height of 0!")
        print("Isn't it pretty!")
        exit(0)

hashes = 2

for i in range(height):
    spaces = (height - hashes + 1)
    for j in range(spaces):
        print(" ", end="")
    for k in range(hashes):
        print("#", end="" )
    print()
    hashes += 1

【问题讨论】:

  • 您能否包含您收到的 full 错误?另外,第 24 行是哪一行?
  • 对不起!第 24 行是: print(" ", end="") 完整的消息是:severity: 'Error' message: 'E0001:invalid syntax (, line 24)' at: '24,1' source :'pylint'
  • 你确定你使用的是 Python 3 吗?
  • 您使用的是哪个版本的 Python?试试import sys; print(sys.version)
  • 第 17 行还是第 24 行?是哪个?

标签: python python-3.x syntax-error


【解决方案1】:

你正在使用 python2 并且应该改变:

print(" ", end="")
print("#", end="" )

到:

print(" "),
print("#"),

进一步

你可能应该改变:

print() 

print("")

而这种“美”可以通过使用“\n”来减少,它翻译了行。

print()
print()
print()
print("I have drawn a pyramid with a height of 0!")
print("Isn't it pretty!")

到:

print("\n\n\nI have drawn a pyramid with a height of 0!\nIsn't it pretty!")

【讨论】:

  • 感谢关于风格改进的提示!但是我确信我正在使用 Python3。 '导入系统; print(sys.version)' 返回:3.6.2(默认,2017 年 10 月 2 日,09:48:04)[GCC 5.4.0 20160609]
  • @wvandertoorn 这很奇怪,因为我同时拥有 py2 和 py3,并且在 py2 上复制了您的错误。你可以在 3.6 上正常工作。
  • @wvandertoorn python3 可能是 3.6.2,但 pylint 呢?
  • 另外,from __future__ import print_function 可能是处理版本不匹配的更好方法,而不是“修复”所有 print 调用,假设正在使用的版本至少为 2.6。
  • @trentcl 好吧,这是有争议的,因为我假设他在 py2 中编写了代码。不过,很可能问题出在其他地方。
【解决方案2】:

TL;DR:尝试安装 pylint3

sudo apt-get install pylint3

今天我遇到了几乎相同的问题。我想使用 pyreverse,但出现了提到的语法错误消息。我已经安装了 python2 和 python3,所以假设 pyreverse (pylint) 只是使用 python2,所以我更改了我的 python 符号链接(python2 是默认值):

sudo ln -sfn /usr/bin/python3.6 /usr/bin/python

但这并没有帮助,所以我查看了 pylint 是否有 pylint3 版本并且它有。安装 pylint3 并运行 pyreverse3(对于您的情况为 pylint3)后,一切运行良好。

我知道这是一个老问题,但对其他人来说可能会有所帮助。

【讨论】:

  • 谢谢,这通过使用pyreverse3 解决了我的问题。在更一般的 pyreverse 问题中,这可能也是一个很好的提示。
猜你喜欢
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
  • 2013-01-06
  • 1970-01-01
相关资源
最近更新 更多