【问题标题】:Python - why do I get this error? [duplicate]Python - 为什么会出现此错误? [复制]
【发布时间】:2015-11-26 09:31:53
【问题描述】:

我是 python 新手。我试图了解为什么会出现此错误:

File "python-challenge-1.py", line 12
    print original.translate(table)
             ^

SyntaxError: 无效语法

这里是完整的代码:

import string

original = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc " \
    "dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq " \
    "rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu " \
    "ynnjw ml rfc spj."

table = string.maketrans(
"abcdefghijklmnopqrstuvwxyz", "cdefghijklmnopqrstuvwxyzab"
)

print original.translate(table)

【问题讨论】:

  • 在 python 2.7 下工作正常。也许你正在使用 python 3。在 print 语句后加上括号

标签: python


【解决方案1】:

print() 是 Python 3 中的一个函数,但 print 是 Python 2 中的一个关键字。查看PEP 3105 了解更多信息。 here 也是一个关于 SO 的好问题。

您应该尝试将其更改为:

print(original.translate(table))

【讨论】:

    【解决方案2】:

    正如@JoshRumbut 所指出的,print() 确实是一个函数。

    Python2中,你可以写print 12,但是在Python3中已经放弃了,所以你现在必须print(12) .

    幸运的是,Python2 也理解函数式版本,所以一般来说你最好使用这个版本。

    【讨论】:

    • 不要过于迂腐,但从技术上讲,Python2 的版本是一个语句, print('foo') 在 Python 2 中有效,因为 print 语句后面的表达式被强制转换为字符串值,然后传递给 print。这意味着 print ( 是什么。 Print (1,2) 表示“打印元组 (1,2)”,而“print (1)”表示“打印表达式“(1)”的值,它等于“1”。print 的输出(1,2) 然后在 Python2 上,虽然它会运行,但会与 Python3 不同。
    • @W.Prins:你说的当然是对的,然而,更高版本的 Python 2确实支持print 函数。它通常被print 语句掩盖,但可以通过将from __future__ import print_function 放在任何其他import 语句之前来暴露它。 (FWIW,我使用 Python 2.6.6)。
    • @PM2Ring 确实如此。也感谢您添加。
    猜你喜欢
    • 1970-01-01
    • 2021-03-29
    • 2023-03-30
    • 1970-01-01
    • 2013-06-19
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多