2011-06-22 7 views
9
for x in range(1, 11): 
    print repr(x).rjust(2), repr(x*x).rjust(3), 
    # Note trailing comma on previous line 
    print repr(x*x*x).rjust(4) 

結果:それは行継続シンボルである場合このコードの最後のコンマの使い方は?

1 1 1 
2 4 8 
3 9 27 
4 16 64 
5 25 125 
6 36 216 
7 49 343 
8 64 512 
9 81 729 
10 100 1000 

は、なぜ著者は再び印刷文を書くことができますか?

私は、Print削除する場合:

for x in range(1, 11): 
    print repr(x).rjust(2), repr(x*x).rjust(3), 
    # Note trailing comma on previous line 
    repr(x*x*x).rjust(4) 

結果:

1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81 10 100 

明らかに最後の行は無視されます。どうして?それは声明ではないからですか?

私は2番目の行に戻って最後の式を置く場合:

for x in range(1, 11): 
    print repr(x).rjust(2), repr(x*x).rjust(3), repr(x*x*x).rjust(4) 

結果:

1 1 1 
2 4 8 
3 9 27 
4 16 64 
5 25 125 
6 36 216 
7 49 343 
8 64 512 
9 81 729 
10 100 1000 

答えて

19

それは、テキストの末尾に改行を印刷からprintを停止します。

Daveが指摘したように、documentationはこう言っています。 "print文がカンマで終わらない限り、最後に" \ n "文字が書かれます。"

+4

ドキュメント:http://docs.python.org/reference/simple_stmts.html#grammar-token-print_stmt。 "print文がカンマで終わらない限り、最後に" \ n "文字が書かれます。" –

+0

私は今、理解しています.....ところで、Pythonは2番目の例のように1行で1つの式で大丈夫ですか?それは表現を無視していますか? – lamwaiman1988

+0

式は有効な文です。もしそうでなければ、特別な構文なしに関数を呼び出すことはできません。 –

3

printステートメントの最後のカンマは、改行文字が文字列に追加されないようにします。あなたの微調整のコードでは

http://docs.python.org/reference/simple_stmts.html#the-print-statementを参照してください):Pythonの文は、一般的に、改行で区切られているので

for x in range(1, 11): 
    print repr(x).rjust(2), repr(x*x).rjust(3), 
    # Note trailing comma on previous line 
    repr(x*x*x).rjust(4) 

最後の行は、単純に未使用の表現になります。バックスラッシュ(\) - Python行継続文字 - をprint文の行末に追加してコメントを削除した場合は、repr(x*x*x).rjust(4)がprint文に追加されます。

より明確にするために:

print repr(x).rjust(2), repr(x*x).rjust(3), repr(x*x*x).rjust(4) 

print repr(x).rjust(2), repr(x*x).rjust(3), \ 
repr(x*x*x).rjust(4) 

は同等ですが、

print repr(x).rjust(2), repr(x*x).rjust(3), 
repr(x*x*x).rjust(4) 

ではありません。このprintステートメントの奇妙さは、Python 3で修正されたものの1つです。 (http://docs.python.org/release/3.0.1/whatsnew/3.0.html#print-is-a-functionを参照)

関連する問題