程序在 Python 2.7.8 中失败,但在 Python 3.4.1 中运行

Posted

技术标签:

【中文标题】程序在 Python 2.7.8 中失败,但在 Python 3.4.1 中运行【英文标题】:Program fails in Python 2.7.8 but runs in Python 3.4.1 【发布时间】:2014-10-27 18:36:37 【问题描述】:

我已经使用 Python 3.4.1 运行了这段代码并且它可以工作,但是如果我使用 Python 2.7.8 它会失败,为什么?

i=1
while i<10:
    for x in(1,2,3,4,5,6,7,8,9):
        print (i*x,'\t',end='')
        if x==9:   
            print('\n')
            i=i+1

【问题讨论】:

您的问题标题与问题正文完全不同 - 请修复它。此外,添加您收到的错误消息将非常有帮助 互联网上有很多地方可以告诉您 Python 2.x 和 Python 3.x 之间的区别(首先是docs.python.org/3.0/whatsnew/3.0.html)。通读那些。如果您刚开始使用 Python,请从 Python 3 开始,暂时不要使用 Python 2。 您的问题 title 不在此处;我们无法为您提供“最佳”选择。虽然标题和问题主体完全无关,但是您的问题主体缺乏细节,无需猜测即可回答。 如何代码在 Python 2 中失败?相反,您期望会发生什么? 【参考方案1】:

其实print在Python 3中是一个函数,而在Python 2中不是。在Python 2中,需要去掉()end。作为替代方案,您可以将 from __future__ import print_function 添加到 Python 2 中的代码中,以便像在 Python 3 中一样使用 print

【讨论】:

【参考方案2】:

Python 2.x 和 3.x 版本之间的重大变化之一是 print is a function - 在 2.x 中它是一个声明。你有两个选择,要么使用:

from __future__ import print_function

在脚本的顶部使用 2.x 中的新功能,或者使用旧语法使用单独的 2.x 版本:

print '0\t'.format(i * x), # note trailing comma to suppress newline

在我看来,前者要容易得多。

请注意,2.x print 语句的默认 sep 等效项是一个空格,因此是原始版本

print i * x, '\t',

在制表符之前会包含一个额外的空格。另外,请注意,您的 3.x 版本可能会稍微简单一些:

print(i * x, end='\t')

【讨论】:

以上是关于程序在 Python 2.7.8 中失败,但在 Python 3.4.1 中运行的主要内容,如果未能解决你的问题,请参考以下文章

Python 包全局安装,但在虚拟环境中失败

XHR 请求在 Scrapy 中失败,但在 python-requests 中有效

Axios GET请求在我的本地版本上运行,但在Heroku上失败-未捕获(承诺)错误:请求失败,状态码为500

COM 方法调用在 C#、VB.NET 中失败,但在 Python 中有效

为啥 JPA 提交在应用程序中失败,但在 JUnit 中有效?

Objective-C 协议在 XCTest 中选择器失败,但在应用程序中失败 [重复]