आप क्या कर सकते हैं इसकी एक सीमा है, लेकिन सब कुछ 1 बड़ी स्ट्रिंग में इकट्ठा करना और फिर स्क्रीन क्लीनर के बीच एक बार प्रिंट करना लूप में कई छोटे प्रिंटों से बेहतर है। निम्नलिखित कोड चलाने के लिए और देखो कितना बेहतर कार्यक्रम की दूसरी छमाही पहली छमाही की तुलना में चलाता है:
import time, os, random
def display1(chars):
os.system('cls')
for row in chars:
print(''.join(row))
def display2(chars):
os.system('cls')
print('\n'.join(''.join(row) for row in chars))
chars = []
for i in range(40):
chars.append(["-"]*40)
for i in range(100):
r = random.randint(0,39)
c = random.randint(0,39)
chars[r][c] = "X"
time.sleep(0.1)
display1(chars)
os.system('cls')
time.sleep(1)
chars = []
for i in range(40):
chars.append(["-"]*40)
for i in range(100):
r = random.randint(0,39)
c = random.randint(0,39)
chars[r][c] = "X"
time.sleep(0.1)
display2(chars)
संपादित करें पर: आप cls
से बचने के लिए @GingerPlusPlus के उत्कृष्ट विचार के साथ इन विचारों को जोड़ सकते हैं। यह चाल बड़ी संख्या में बैकस्पेस प्रिंट करना है। -
पहले cls
के अपने स्वयं के संस्करण लिखें:
def cls(n = 0):
if n == 0:
os.system('cls')
else:
print('\b'*n)
पहली बार यह कहा जाता है - पारित यह शून्य और यह सिर्फ स्क्रीन को साफ़ करें।
निम्नलिखित समारोह एक बड़ा प्रिंट में कमांड विंडो के लिए एक चरित्र सरणी धक्का और मुद्रित वर्णों की संख्या देता है (क्योंकि यह कर्सर की स्थिति बदलने के लिए आवश्यक backspaces की संख्या है):
def display(chars):
s = '\n'.join(''.join(row) for row in chars)
print(s)
return len(s)
की तरह प्रयुक्त इस प्रकार:
chars = []
for i in range(40):
chars.append(["-"]*40)
for i in range(100):
n = 0
r = random.randint(0,39)
c = random.randint(0,39)
chars[r][c] = "X"
time.sleep(0.1)
cls(n)
n = display(chars)
जब उपर्युक्त कोड चलाया जाता है, तो प्रदर्शन लगभग कोई झिलमिलाहट के साथ आसानी से बदलता है।
स्रोत
2016-01-16 16:23:31
स्क्रीन साफ़ न करें। इसके बजाय, ड्राइंग से पहले स्क्रीन के ऊपरी बाएं कोने में अपने कर्सर को ले जाएं। – GingerPlusPlus