2012-03-12 15 views
7

संभव डुप्लिकेट:
backspace character weirdnessपाइथन कथन में बैकस्पेस व्यवहार, कोड में ' b' प्रिंट करने का सही व्यवहार क्या है?

मैं देखा है कि 1. यदि मैं केवल प्रिंट backspaces, अर्थात अजगर में \ ख का एक क्रम है, तो यह पूरी तरह से खाली है। 2. यदि मैं बैकस्पेस यानी 'sssss \ b \ b \ b \ b \ b' के बाद वर्णों को प्रिंट करता हूं, तो यह एकाधिक 'अक्षर' प्रिंट करेगा, लेकिन अगर मैं 'ssss \ b \ b \ b जैसे कुछ प्रिंट करता हूं \ baaaa ', फिर बैकस्पेस, \ b, वास्तव में कार्य करेगा जैसे कि मैं बैकस्पेस टाइप कर रहा हूं और' s 'अक्षर हटा दूंगा।

मैं विंडोज एक्सपी पर पायथन 2.6 का उपयोग कर रहा हूं। क्या यह अपेक्षित व्यवहार है। अगर मैं बैकस्पेस चरित्र की लंबाई प्राप्त करने की कोशिश है, यह के रूप में 1.

यहाँ मुद्रित किया जाता है अपने परीक्षण कोड -

>>> print 'ssss\b\b\b\b\baaaaa' 
aaaaa 
>>> print 'ssssssss\b\b\b\b\baaaaa' 
sssaaaaa 
>>> print 'ssssssss\b\b\b\b\b' 
ssssssss 
>>> print 'ssssssss\b\b\b\b\baaaaa' 
sssaaaaa 
>>> print '\b\b\b\b\b' 

>>> 

मेरे सवाल है क्या अपेक्षित व्यवहार है जब मैं प्रिंट '\ बी' में पायथन और क्यों हटाना केवल एक विशेष मामले में काम करता है?

+5

बैकस्पेस कुछ भी नहीं हटाता है, यह कर्सर को बाईं ओर ले जाता है और इसके बाद आप जो लिखते हैं उससे ओवरराइट हो जाता है। – alexis

+0

यह निश्चित रूप से है, लेकिन मुझे जवाब पसंद नहीं आया (लेखक ने हार्ड कॉपी टर्मिनल के बारे में कभी नहीं सुना है), इसलिए मैंने अपना खुद का जोड़ा है। – alexis

उत्तर

7

विस्तारित जवाब इसका सबूत: बैकस्पेस कुछ भी नहीं हटती, यह कर्सर को बाईं ओर ले जाता है और यह बाद में लिखने के द्वारा कवर किया जाता है। यदि आप ऐसे डिवाइस पर लिख रहे थे जो ओवरस्ट्राइकिंग (जैसे पुरानी शैली वाली "हार्ड कॉपी" टर्मिनल, जो टाइपराइटर की तरह काम करता है) प्रदर्शित कर सकता है, तो आप वास्तव में पुराने चरित्र के शीर्ष पर नया चरित्र देखेंगे। यह वास्तविक कारण बैकस्पेस में इन अर्थशास्त्र हैं।

यूनिक्स कमांड लाइन पर, खोल को बैकस्पेस को "मिटाने" के रूप में समझने के लिए सेट किया जा सकता है - जब तक कि यह केवल इस तरह से हटाने का इलाज न हो। लेकिन यह आपके इनपुट को पढ़ने के कार्यक्रम पर निर्भर है।

5

जैसा कि एलेक्सिस ने टिप्पणी में कहा था, यह कर्सर को वापस ले जाता है (बाईं ओर एक वर्ण से)। फिर जब आप प्रिंट, यह, चरित्र

>>> print 'abc\b' 
abc 
>>> print 'abc\b\b\b' 
abc 
>>> print 'abc\b1' 
ab1 
>>> print 'abc\b\b\b123' 
123 

कुछ भी नहीं अजगर विशिष्ट (पाठ की वर्तमान पंक्ति के लिए एक ही आवेदन करने वाले) अधिलेखित कर देता है के रूप में "backspace character wiredness"

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