2016-07-07 23 views
-4

と私の文字列の印刷です。しかし、これを印刷すると、角括弧と引用があります。のPython 2.7は、なぜ私は、以下の変数を持っているブラケット

(8, 'mph', 'W') 

他のすべての変数が正しく出力されます。私はそれがこのようにプリントアウトしたいと思います:

8 mph W 
+7

これは文字列ではありません。それはタプルです。 'print'構文で混乱している可能性があります。これは複数のオブジェクトを印刷することができますが、いずれも文字列である必要はありません。 – user2357112

+0

'' '.join(map(str、weatherWind)) 'を使ってみましょう。(あなたは一行に括弧を入れずにpython print array(http://stackoverflow.com/q/11178061)他のリンク先を参照すると分かります) –

+0

@ user2357112ああありがとうございます。その情報を使って修正します。 @m_callensいいえ私は非常に新しいです。私は自分自身のプロジェクトを設定して – Ross

答えて

3

は、あなたはそれでは3つの値、整数、文字列'mph'と文字列'W'とのタプルを作成しました。あなたはこの1つの文字列を作りたいと思った場合は、string formattingを使用します。

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

をこれが風速を挿入し、そこにすでにmphと文字列の{..}スロットに情報を保有します。 .0fフォーマット命令は浮動小数点の風速を四捨五入して整数部分だけを丸めて表示します。

print a, b, c 

はあなたがprint a, b, cを行うと

x = a, b, c 
print x 

とは完全に異なる何かをする、

>>> 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

やや紛らわしい:

その後、任意の更なる引用符や括弧なしでその文字列を印刷することができます、Pythonは各オブジェクトに対してstrを呼び出します。オブジェクトの文字列表現を取得し、それらの文字列をスペースで区切って出力します。

x = a, b, cを実行すると、タプルが作成されます。この時点では文字列は生成されません。 print xを実行すると、Pythonはタプルstrを呼び出し、結果を出力します。タプルの表現は、print a, b, cの出力とは非常に異なります。あなたがprint a, b, cの出力のように見える文字列をしたい場合は

、それを行うための汎用的な方法は、あなたが、それを行うには、より便利な方法があるかもしれません印刷している内容に応じて

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

です。たとえば、Martijnが提案したような文字列の書式設定です。

関連する問題