2011-06-22 8 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 

यदि यह एक लाइन निरंतरता प्रतीक है, क्यों लेखक लिखने प्रिंट बयान फिर से कर सकते हैं?

अगर मैं प्रिंट निकालें:

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 

जाहिर अंतिम पंक्ति की उपेक्षा है। क्यूं कर? क्या ऐसा इसलिए है क्योंकि यह एक बयान नहीं है?

अगर मैं दूसरी पंक्ति के लिए वापस पिछले अभिव्यक्ति डाल:

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

जैसा डेव ने बताया, documentation कहता है: ...। "ए '\ n' चरित्र अंत में लिखा जाता है, जब तक कि प्रिंट स्टेटमेंट अल्पविराम से समाप्त न हो।"

+4

प्रलेखन: http://docs.python.org/reference/simple_stmts.html#grammar-token-print_stmt। "ए '\ n' चरित्र अंत में लिखा जाता है, जब तक कि प्रिंट स्टेटमेंट अल्पविराम से समाप्त न हो।" –

+0

अब मैं समझता हूं ..... वैसे ही मेरे दूसरे उदाहरण की तरह एक पंक्ति में एक ही अभिव्यक्ति के साथ पाइथन ठीक है? क्या यह अभिव्यक्ति को अनदेखा करता है? – lamwaiman1988

+0

एक अभिव्यक्ति एक वैध कथन है। यदि यह नहीं था, तो आप अतिरिक्त वाक्यविन्यास के बिना केवल फ़ंक्शन कॉल करने में सक्षम नहीं होंगे। –

3

प्रिंट स्टेटमेंट के अंत में एक कॉमा स्ट्रिंग में जोड़ने के लिए एक न्यूलाइन वर्ण को रोकता है। (http://docs.python.org/reference/simple_stmts.html#the-print-statement देखें)

अपने ट्वीक कोड में:

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) 

अंतिम पंक्ति बस एक अप्रयुक्त अभिव्यक्ति क्योंकि अजगर बयान आम तौर पर लाइन ब्रेक से पृथक कर रहे हैं हो जाता है। यदि आपने बैकस्लैश (\) - पायथन लाइन निरंतरता वर्ण - प्रिंट स्टेटमेंट की रेखा के अंत तक और टिप्पणी को हटा दिया है, तो 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 repr(x).rjust(2), repr(x*x).rjust(3), 
repr(x*x*x).rjust(4) 

नहीं है। प्रिंट स्टेटमेंट की यह विषमता एक चीज बनाकर पाइथन 3 में तय की गई चीज़ों में से एक है। (http://docs.python.org/release/3.0.1/whatsnew/3.0.html#print-is-a-function देखें)

संबंधित मुद्दे