程序在 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 中运行的主要内容,如果未能解决你的问题,请参考以下文章
XHR 请求在 Scrapy 中失败,但在 python-requests 中有效
Axios GET请求在我的本地版本上运行,但在Heroku上失败-未捕获(承诺)错误:请求失败,状态码为500
COM 方法调用在 C#、VB.NET 中失败,但在 Python 中有效