2010-12-19 83 views
0

我與蟒蛇瞎搞,下面這個教程:蟒紋()輸出差異

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:升級固定它:)接受的答案解釋了差異。

+0

關於升級:如果你很高興與Python 2.6,那麼沒有什麼提升,那麼就使用Python 2.x的語法。 – Philipp 2010-12-19 18:09:21

+0

那麼我只用了20分鐘的python,所以我寧願使用最新的學習:) – Josh 2010-12-19 19:03:04

回答

3
print("Concat", "String") 

這是一個tuple。當你把,它變成tuple,因此Python以同樣的方式輸出。

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

一個元組包含許多用逗號分隔的值。

+0

還要注意'print(「Single string」,)''也會輸出元組。 – 2010-12-19 17:47:10

+0

我能做些什麼來獲得我期望得到的行爲?就這一點而言,事情很奇怪,爲什麼:print(22/7)輸出3?不應該只有這樣做,如果我使用//而不是/? – Josh 2010-12-19 17:50:25

+1

@Josh'print「concat」,「string」'。對於第二個問題,它從python 2.x更改爲3.在python 2.x中,僅爲開發人員添加了'//',以適應它。 – 2010-12-19 17:53:41

2

不是OP的原始問題的答案,我認爲sukhbir回答得很好,但對後續問題。

我相信最快的升級方法是去Python website並下載v3。

+0

非常感謝!立即下載。 – Josh 2010-12-19 17:50:43

+0

@Josh:很高興我能幫上忙。 :-) – John 2010-12-19 17:51:39

2

如果您正在使用Python 2.x的,你可以只使用

print "Single", "String" 

的Python 3.x的改變方式版畫作品,以前是一個聲明,現在它是一個功能。

+0

啊!所以一旦我從2.6升級到3.1.3,我可以像我期望的那樣使用print(「A」,「B」)? – Josh 2010-12-19 17:53:27

+0

@Josh是的,你可以 – 2010-12-19 17:55:44

1

的原因是,你正在運行一個Python 3教程使用Python 2

0

爲了得到你想要的行爲,您需要打印的元組的字符串表示。您可以通過使用join方法對字符串得到這樣的:

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

原因行爲並不如預期的是,在Python 2,print是一個關鍵詞。在Python 3中,它被一個函數(也是print)取代,所以後面的語法調用函數而不是打印元組。你可以用

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

一個括號的函數調用,以及一個用於元組複製你已經在Python 3看到的行爲。

+0

我認爲你的意思是'print'是Python 2.x中的一個語句,但是在Python 3中它是一個函數。這是一個關鍵詞,但這裏的比較是在一個語句和一個函數之間進行的。 – user225312 2010-12-19 18:01:57

1

在Python 2中。6你也可以說

from __future__ import print_statement 

得到3.x語法。

2

對於Python 2.7的兼容性,您可以使用佔位符

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