Python 3.2 print( end=) 错误



我是一个重生的业余编程新手,试图在Linux上使用Geany学习Python 3(3.2)。我一直在尝试修改Swaroop C H的Python 3教程中的以下示例。我的代码如下:

#!/usr/bin/env python3
# Filename: poem.py
poem = '''
Programming is fun 
When the work is done 
if you wanna make your work also fun: 
    use Python!
'''
with open('poem.txt', mode = 'w') as pfile:
    pfile.write(poem)
with open('poem.txt', mode = 'r') as pfile:
    while True:
        line = pfile.readline()
        if len(line) == 0:
            break
        print(line, end='')

我不能编译这个程序。我得到以下错误,我不理解:

SyntaxError: ('invalid syntax', ('poem.py', 19, 24, "        print(line, end='')n"))

我在运行他的代码时也出现了同样的错误。一旦我删除end=' ',它就可以正常工作。如果我省略了它,诗的每一行之间都会印上一行空白。

如有任何帮助/解释,我将不胜感激。

您的文件包含Python 3:的正确"shebang"行

#!/usr/bin/env python3

然而,为了使这个shebang行生效,您必须直接以以下方式运行脚本:

./poem.py

(您可能必须执行chmod +x poem.py才能使脚本可执行。)

如果您选择显式运行Python解释器:

python poem.py

那么运行的python将是PATH中的第一个(键入python --version查看是哪个)。您仍然可以使用显式运行Python 3

python3 poem.py

这应该对你有用。

您没有安装Python 3.x,或者没有使用它。这在Python 3.x下对我来说运行得很好,但我在Python 2.x下得到了您的错误。Shebangs不是一个守护者,无论您使用什么来运行脚本,它们都必须受到尊重,如果您直接运行解释器,它们将被忽略。所以试着确保你正在运行Python3。根据您的环境,这可能会以不同的方式完成,但在Unix下,请尝试python3而不是python(尽管像Arch Linux这样的一些发行版将python映射到Python 3.x,将python2映射到Python 2.x)

另一方面,所有文件都是Python中的可迭代文件,因此您最好执行以下操作:

with open('poem.txt', mode='r') as pfile:
    for line in pfile:
        print(line, end='')

另请注意,PEP8建议:

当用于指示关键字参数或默认参数值时,不要在"="符号周围使用空格。

就像在模式参数中一样。

最新更新