जवाबों:
आपके परिणाम प्राप्त करने के कई तरीके हैं। यदि आप अपने मामले के लिए एक समाधान चाहते हैं, तो @ उल्लेख के रूप में स्ट्रिंग गुणन का उपयोग करें । यह केवल तभी काम करने वाला है जब आपका प्रत्येक स्टेटमेंट एक ही स्ट्रिंग को प्रिंट करता है। ध्यान दें कि यह किसी भी लंबाई स्ट्रिंग (जैसे काम करता है) के गुणन के लिए काम करता है।print'foo' * 20
>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa
यदि आप इसे सामान्य रूप से करना चाहते हैं, तो एक स्ट्रिंग बनाएं और फिर इसे एक बार प्रिंट करें। यह स्ट्रिंग के लिए थोड़ी मेमोरी का उपभोग करेगा, लेकिन केवल एक ही कॉल करें print। ध्यान दें कि आप जिस स्ट्रिंग का उपयोग +=कर रहे हैं, उसके स्ट्रिंग स्ट्रिंग आकार में रेखीय है, इसलिए यह तेज होगा।
>>> for i in xrange(20):
... s += 'a'
...
>>> print s
aaaaaaaaaaaaaaaaaaaa
या आप इसे सीधे सीधे sys.stdout का उपयोग करके कर सकते हैं । लिखना () , जो printचारों ओर एक आवरण है। यह केवल कच्ची स्ट्रिंग लिखेगा जो आप इसे देते हैं, बिना किसी स्वरूपण के। ध्यान दें कि 20 aएस के अंत में भी कोई नई रेखा नहीं छपी है ।
>>> import sys
>>> for i in xrange(20):
... sys.stdout.write('a')
...
aaaaaaaaaaaaaaaaaaaa>>>
पायथन 3 printस्टेटमेंट को प्रिंट () फ़ंक्शन में बदलता है , जो आपको एक endपैरामीटर सेट करने की अनुमति देता है । से आयात करके आप इसे> = 2.6 में उपयोग कर सकते हैं __future__। मैं किसी भी गंभीर 2.x कोड में इससे बचूंगा, हालांकि, यह उन लोगों के लिए थोड़ा भ्रमित करने वाला होगा जिन्होंने कभी 3.x का उपयोग नहीं किया है। हालांकि, यह आपको कुछ अच्छाई 3.x लाता है का स्वाद देना चाहिए।
>>> from __future__ import print_function
>>> for i in xrange(20):
... print('a', end='')
...
aaaaaaaaaaaaaaaaaaaa>>>
"".join(...)इसके बजाय उपयोग करें ।
+=पायथन में उपयोग करने वाले स्ट्रिंग समवर्ती एक एकल चरित्र के संघनन के लिए एक निरंतर समय ऑपरेशन है।
से पीईपी 3105: प्रिंट एक समारोह के रूप में नया क्या है अजगर 2.6 में दस्तावेज़:
>>> from __future__ import print_function
>>> print('a', end='')
जाहिर है कि केवल अजगर 3.0 या उच्चतर (या from __future__ import print_functionशुरुआत में 2.6+) के साथ काम करता है । printबयान हटा दिया और बन गया print()अजगर 3.0 में डिफ़ॉल्ट रूप से कार्य करते हैं।
आप printस्टेटमेंट के बीच खाली स्ट्रिंग को प्रिंट करके स्पेस को दबा सकते हैं ।
>>> import sys
>>> for i in range(20):
... print 'a',
... sys.stdout.write('')
...
aaaaaaaaaaaaaaaaaaaa
हालाँकि, एक क्लीनर समाधान सबसे पहले उस संपूर्ण स्ट्रिंग का निर्माण करना है जिसे आप प्रिंट करना चाहते हैं और फिर इसे एक सिंगल printस्टेटमेंट के साथ आउटपुट करते हैं।
sys.stdout.write()इस मामले में केवल उपयोग करना अधिक सुविधाजनक है। हालांकि, मैं यह दिखाना चाहता था कि स्टडआउट के लिए एक खाली स्ट्रिंग लिखने से उपयोग किए गए तत्वों के बीच की जगह दब जाती है print, जो समान स्थितियों में उपयोगी हो सकती है।
आप एक बैकस्पेस वर्ण प्रिंट कर सकते हैं ( '\b'):
for i in xrange(20):
print '\ba',
परिणाम:
aaaaaaaaaaaaaaaaaaaa
यदि आप चाहते हैं कि वे एक बार में एक प्रदर्शन करें, तो आप यह कर सकते हैं:
import time
import sys
for i in range(20):
sys.stdout.write('a')
sys.stdout.flush()
time.sleep(0.5)
sys.stdout.flush() हर बार जब लूप चलाया जाता है, तो चरित्र को लिखने के लिए मजबूर करना आवश्यक है।
बस एक नोट के रूप में:
मुद्रण O (1) है लेकिन एक स्ट्रिंग का निर्माण और फिर मुद्रण O (n) है, जहां n स्ट्रिंग में कुल वर्ण हैं। तो हाँ, स्ट्रिंग बनाते समय "क्लीनर" है, यह ऐसा करने का सबसे कुशल तरीका नहीं है।
जिस तरह से मैं यह करूंगा वह इस प्रकार है:
from sys import stdout
printf = stdout.write
अब आपके पास एक "प्रिंट फंक्शन" है जो किसी भी स्ट्रिंग को प्रिंट करता है जिसे आप हर बार नई लाइन वर्ण को वापस किए बिना देते हैं।
printf("Hello,")
printf("World!")
आउटपुट होगा: हैलो, वर्ल्ड!
हालाँकि, यदि आप पूर्णांक, फ़्लोट्स या अन्य गैर-स्ट्रिंग मान मुद्रित करना चाहते हैं, तो आपको उन्हें स्ट्रिंग () फ़ंक्शन के साथ स्ट्रिंग में बदलना होगा।
printf(str(2) + " " + str(4))
आउटपुट होगा: 2 4
वाह!!!
यह बहुत लंबा समय है पहले की बात है
अब, अजगर 3.x में यह बहुत आसान हो जाएगा
कोड:
for i in range(20):
print('a',end='') # here end variable will clarify what you want in
# end of the code
उत्पादन:
aaaaaaaaaaaaaaaaaaaa
प्रिंट () फ़ंक्शन के बारे में अधिक
print(value1,value2,value3,sep='-',end='\n',file=sys.stdout,flush=False)
यहाँ :
value1,value2,value3
आप अल्पविराम का उपयोग करके कई मान मुद्रित कर सकते हैं
sep = '-'
3 मानों को '-' वर्ण से अलग किया जाएगा
आप इसके बजाय किसी भी वर्ण का उपयोग कर सकते हैं जैसे कि sep = '@' या sep = 'good'
end='\n'
डिफॉल्ट प्रिंट फंक्शन द्वारा आउटपुट के अंत में '\ n' चार्जर को रखा जाता है
लेकिन आप किसी भी वर्ण या स्ट्रिंग का उपयोग अंत वैरिएबल मान को बदलकर कर सकते हैं
जैसे अंत = '$' या अंत = '।' या अंत = 'हैलो'
file=sys.stdout
यह एक डिफ़ॉल्ट मान है, सिस्टम मानक आउटपुट
इस तर्क का उपयोग करके आप आउटपुट फ़ाइल स्ट्रीम बना सकते हैं जैसे
print("I am a Programmer", file=open("output.txt", "w"))
इस कोड के द्वारा आप output.txt नाम की एक फाइल बनाएंगे जहाँ आपका आउटपुट मैं एक प्रोग्रामर संग्रहीत किया जाएगा
flush = False
यह फ्लश का उपयोग करके एक डिफ़ॉल्ट मान है = सही आप स्ट्रीम को जबरन फ्लश कर सकते हैं
"".join("a" for i in xrange(20))। (यह सिर्फ करने की तुलना में बहुत अधिक लचीला है"a" * 20, जैसा कि मुझे लगता है कि यह एक सरल उदाहरण है)।