现在,我正在研究“如何像计算机科学家一样思考”。我在Simple Tables。 本课程是制作简单的表格。第一个例子在浏览器中运行正常,但是当我把它作为Sublime时,\ t符号就会打印出来。它不会在浏览器中执行此操作。我甚至将代码复制到了崇高。
这是我的代码:
print("n", '\t', "2**n")
print("---", '\t', "-----")
for x in range(13):
print(x, '\t', 2 ** x)
我的结果是:
('n', '\t', '2**n')
('---', '\t', '-----')
(0, '\t', 1)
(1, '\t', 2)
(2, '\t', 4)
(3, '\t', 8)
(4, '\t', 16)
(5, '\t', 32)
(6, '\t', 64)
(7, '\t', 128)
(8, '\t', 256)
(9, '\t', 512)
(10, '\t', 1024)
(11, '\t', 2048)
(12, '\t', 4096)
如何使括号和\ t符号消失。我知道括号不应该在那里,所以我对此感到困惑,我不知道如何摆脱\ t符号而不会出现“意外字符”错误。
答案 0 :(得分:2)
我认为你正在使用Python 2并打印元组。在文件的顶部放置from __future__ import print_function
,它将看起来像您期望的那样。
更好的是,升级到Python 3! Python网站上有适用于Mac *和PC的安装程序,大多数(可能是所有?)Linux发行版在默认包管理器的存储库中都有Python 3。
要更详细地解释发生了什么,请查看其中一个Python core developer's answers to another question。
由于您运行的是Python 2,其中print是语句,语句只能看到一个参数:元组{{1 }}。 (x, '\t', 2 ** x)
尝试在已经给出的所有对象上调用print
,但由于它在这种情况下只看到一个对象,即元组,它只会尝试在其上调用__str__
。由于__str__
未定义tuple
,因此会调用__str__
。您可以在the source中看到元组在元组中的所有项目上调用__repr__
。字符串repr()
的repr是'\t'
。 (这稍微介绍了Python中'\t'
和repr
之间的差异。每当您使用str
时,该函数都会看到三个单独的参数,并尝试在每个参数上调用from __future__ import print_function
。这将打印出你想要的方式。
对于这种特定情况,您需要确保不在参数之间插入空格,因此请放入关键字参数__str__
:
sep=''
* 注意:在Mac OS X上,通常建议使用Homebrew:http://docs.python-guide.org/en/latest/starting/install3/osx/