【问题标题】:Python print() output discrepancyPython print() 输出差异
【发布时间】:2010-12-19 17:45:09
【问题描述】:

按照本教程,我正在使用 python:

http://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_3/Hello,_World

据此,我的输出如下代码:

print("Single String")
print("Concat", "String")

应该是这样的:

Single String
Concat String

但它看起来像这样:

Single String
('Concat', 'String')

这是为什么?我在 OSX 上使用 Python 2.6。

编辑:我刚刚意识到该指南适用于 3.0,而我有 2.6。这是导致问题的原因吗?升级 Python 安装的最快方法是什么?

编辑 2:升级修复了它 :) 接受的答案解释了差异。

【问题讨论】:

  • 关于升级:如果你对 Python 2.6 很满意,那么没有什么可升级的,只需要使用 Python 2.x 语法。
  • 好吧,我只用了20分钟的python,所以我宁愿用最新的来学习:)

标签: python printing concatenation


【解决方案1】:
print("Concat", "String")

这是tuple。当您输入 , 时,它变成了 tuple,因此 Python 以相同的方式输出它。

>>> t = ('Let', 'Us', 'Test')
>>> type(t)
<type 'tuple'>

一个元组由多个用逗号分隔的值组成。

【讨论】:

  • 还要注意print("Single string",)也会输出元组。
  • 我能做些什么来得到我期望得到的行为?就此而言,在奇怪的事情上,为什么: print(22 / 7) 输出 3?如果我使用 // 而不是 / ,它不应该只这样做吗?
  • @Josh print "concat", "string"。而对于第二个问题,它从 python 2.x 更改为 3。在 python 2.x 中,添加了// 只是为了让开发人员适应它。
  • 22/7,两者都是整数,因此 Python 将其输出为 3。// 是地板除法。如果您希望 22/7 等于 3.1428571428571428,请执行 from __future__ import division。此行为在 Python 3 中已更改,其中 22/7 默认仅为 3.1428571428571428。
【解决方案2】:

不是对 OP 原始问题的回答,我认为 sukhbir 回答得很好,而是对后续问题的回答。

我相信最快的升级方法是转到Python website 并下载 v3。

【讨论】:

  • @Josh:很高兴我能帮上忙。 :-)
【解决方案3】:

如果您使用的是 Python 2.x,则可以使用

print "Single", "String"

Python 3.x 改变了 print 的工作方式,以前它是一个语句,现在它是一个函数。

【讨论】:

  • 啊!因此,一旦我从 2.6 升级到 3.1.3,我就可以按预期使用 print("A","B") 了吗?
【解决方案4】:

为了与Python 2.7 兼容,您可以使用占位符

print('%s %s')%("Concat", "String")

【讨论】:

    【解决方案5】:

    原因是您正在使用 Python 2 运行 Python 3 教程。

    【讨论】:

      【解决方案6】:

      在 Python 2.6 中你也可以说

      from __future__ import print_statement
      

      获取 3.x 语法。

      【讨论】:

        【解决方案7】:

        要获得所需的行为,您需要打印元组的字符串表示形式。您可以通过在字符串上使用join 方法来获得它:

        print ' '.join(('a', 'b'))
        

        行为不符合预期的原因是在 Python 2 中,print 是一个关键字。在 Python 3 中,它已被一个函数(也称为 print)取代,因此后一种语法调用函数而不是打印元组。你可以复制你在 Python 3 中看到的行为

        print(('a', 'b'))
        

        一组括号用于函数调用,一组括号用于元组。

        【讨论】:

        • 我认为您的意思是 print 在 Python 2.x 中是一个语句,但在 Python 3 中它是一个函数。它是一个关键字好吧,但这里的比较是在语句和函数之间。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-22
        • 2020-11-30
        • 1970-01-01
        • 1970-01-01
        • 2020-07-28
        相关资源
        最近更新 更多