2016-07-07 25 views
-4

串印刷下面我有一個變量:的Python 2.7,爲什麼是我與括號

weatherWind = int(round(c["windSpeed"])), "mph", bearing_to_direction(c["windBearing"]) 

此刻windSpeedwindBearing從黑暗的天空天氣API所值。然而,當我打印出來它有括號,並在報價是:

(8, 'mph', 'W') 

我所有的其他變量正確地打印出來。我想它打印出來是這樣的:

8 mph W 
+7

這不是一個字符串;它是一個元組。你可能已經被'print'語法混淆了,它可以接受多個對象來打印,而這些對象都不需要是字符串。 – user2357112

+0

非常類似於[單行中沒有括號的python打印數組](http://stackoverflow.com/q/11178061),嘗試使用'''.join(map(str,weatherWind))'('你會明白,如果你參考其他鏈接的帖子) –

+0

@ user2357112啊,謝謝。管理修復它的信息。 @m_callens不,我很新。我喜歡設置自己的項目學習 – Ross

回答

3

您創建了一個元組在這3個值,整數,字符串'mph'和字符串'W'。如果你想使這個一個字符串,使用string formatting

weatherWind = '{:.0f} mph {}'.format(c["windSpeed"], bearing_to_direction(c["windBearing"])) 

這就將風速和方位信息到{..}插槽與mph已經存在的字符串。格式化指令使您的浮點風速四捨五入以顯示整數部分。

然後,您可以打印字符串沒有任何進一步的引號或圓括號:

>>> bearing_to_direction = lambda d: 'NSWE'[d] 
>>> c = {'windSpeed': 7.92, 'windBearing': 2} 
>>> print '{:.0f} mph {}'.format(c["windSpeed"], bearing_to_direction(c["windBearing"])) 
8 mph W 
>>> c = {'windSpeed': 3.14, 'windBearing': 1} 
>>> print '{:.0f} mph {}'.format(c["windSpeed"], bearing_to_direction(c["windBearing"])) 
3 mph S 
+0

謝謝。所以我很快就把它改爲'weatherWind = str(int(round(c [「windSpeed」])))+「mph」+ bearing_to_direction(c [「windBearing」])'' – Ross

+2

@RossWatson:使用'str.format()'更清晰,更靈活。例如,移動東西並添加更多插槽比較容易。 –

3

有點混亂,

print a, b, c 

做一些事情從

x = a, b, c 
print x 

完全不同的,當你做print a, b, c ,Python在每個對象分隔符上調用str只需獲取對象的字符串表示形式並打印這些由空格分隔的字符串即可。當你做x = a, b, c,你正在構建一個元組。目前沒有生產任何字符串。當你做print x時,Python然後在元組上調用str並打印結果。元組的str表示與print a, b, c輸出非常不同。

如果你想有一個字符串,它看起來像print a, b, c輸出,通用的方式來做到這一點是

x = ' '.join(map(str, [a, b, c])) 

取決於你打印的東西,有可能會更方便的方式來做到這一點;例如,如Martijn所建議的字符串格式化。

相關問題