On 11Mar2016 21:31, boB Stepp <robertvst...@gmail.com> wrote:
I must be bored tonight.  I have to confess that when copying and
pasting from the interpreter into a plain text email, I often find it
cluttered to confusing by all the ">>>..." that can result from nested
quoting.  So I poked around on the Internet and found that I can
temporarily change the prompt symbol using sys.ps1.  My initial trials
are:

Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:54:25) [MSC v.1900
64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
import sys
sys.ps1 = '=>'
=>sys.ps1 = chr(26)
→sys.ps1 = chr(16)
►

I personally like the last of these.  My question is, will this show
up as a black, filled-in arrowhead pointing to the right on everyone's
email?  I have yet to delve into Unicode display issues, but I have
vague recollections that the old ASCII table values might not always
display the same thing from one person's display to another one's.  Is
this correct?

For 16 and 26, yes. They are not printable characters; I'm surprised they render as visible symbols at all. Certainly other terminals are under no obligation to render them this way.

When I run your code above I get empty appearing prompts as I would have expected - these are control characters and not printable.

This leads me to ask: what is your environment? Mine is Mac OSX in an iTerm, which renders Unicode.

Interestingly, your _email_ showing your code is presented to me as right-pointing triangle for chr(16) and a little arrow for chr(26), so your environment has translated your cut/paste from your display into something that renders. Your email message, as received here, is in UTF-8.

Decoding that Unicode says your right-arrow is codepoint 0x2192 and your triangle is 0x25ba. Let's write a little program:

 #!/usr/bin/python3
 import sys
 import unicodedata
 s=sys.stdin.read()
 for c in s:
   try:
     uname = unicodedata.name(c)
   except ValueError as e:
     uname = "UNNAMED: %s" % (e,)
   print("0x%04x %s" % (ord(c), uname))

Echoing your text into it says, for the right arrow and the triangle respectively:

 0x2192 RIGHTWARDS ARROW
 0x25ba BLACK RIGHT-POINTING POINTER

So it seems that your environment has chosen to transcribe your chr(26) and chr(16) into some glyphs for display, and matched those glyphs with suitable Unicode codepoints. (Well, "suitable" if you also see a right-arrow and a right pointing triangle; do you?)

So: I would not rely on your stuff being presented nicely if you use 16 and 26 because they are not printable to start with, and you just got lucky. If, OTOH, you figure out some nice glyphs and their Unicode points, then many environments will render them sensibly. Though, of course, not a pure ACII terminal - those are rare these days though.

Finally, I would also recommend that whatever prompt you use has a trailing space so that people can more easily separate it from the code.
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to