Exercise 10: 那是什么?

来源:互联网 发布:模拟退火算法模型 编辑:程序博客网 时间:2024/03/29 06:10

原文链接:http://learnpythonthehardway.org/book/ex10.html

        在Exercise 9中我介绍了一些新的知识给你,是为了让你循序渐进的学习。上一节中我展示了让一个字符串分多行打印输出的两种方法。第一中方法是在以月份命名的字符串之间放了 \n 字符。你只要在两个字符需要分行输出的地方放入一个换行符就可以了。

       这里使用的 \ (反斜杠)字符可以将一些难以输出的字符放入字符串中输出。有许多不同的字符的“转义序列”需要转化才可以写入字符串中,这里有一个特殊的字符,双反斜杠就是两个反斜杠组成的 \\ 。这两个字符将只被输出一个反斜杠。我们解析来了会使用这些字符,你就会明白我在说什么了。

       另一个重要的转义序列是转化一个单引号或者双引号。想象一下你在一个字符串中使用了双引号并且你想要输出它。如果你是这样写的:”I "understand" joe."这样Python就会误认为“understand"两边的双引号是字符串结束时使用的双引号。你需要有一种方法来告诉Python字符串里面的双引号并不是一个正在的双引号。

       为了解决这个问题,你就需要对单引号和双引号做字符转义,这样Python 就能正确识别了。例如:

”I am 6'2\" tall." , #escape double-quote inside string'I am 6\'2" tall.'    #escape single-quote inside string

       第二种方法就是使用三个双引号 “”“  ,工作原理类似于字符串,但是在你再输入”“”之前你可以想输入多少行文本就输入多少行。我们也会在下面练习中演示。

tabby_cat = "\tI'm tabbed in."persian_cat = "I'm split\non a line."backslash_cat = "I'm \\ a \\ cat."fat_cat = """I'll do a list:\t* Cat food\t* Fishies\t* Catnip\n\t* Grass"""print tabby_catprint persian_catprint backslash_catprint fat_cat

输出结果如下:

查看你输入了tab字符的地方,在这次练习中得到正确的空格缩进才是重点。
E:\>python ex10.py        I'm tabbed in.I'm spliton a line.I'm \ a \ cat.I'll do a list:        * Cat food        * Fishies        * Catnip        * Grass

转义序列:

下面列举了Python支持的转义字符,你可能不会用到所有的转义字符,但至少你得记得它们到底做了什么操作。并且你应该试着在字符串中使用这些转义字符看你能否正确的使用它们。
EscapeWhat it does.\\Backslash ()\'Single-quote (')\"Double-quote (")\aASCII bell (BEL)\bASCII backspace (BS)\fASCII formfeed (FF)\nASCII linefeed (LF)\N{name}Character named name in the Unicode database (Unicode only)\r ASCIICarriage Return (CR)\t ASCIIHorizontal Tab (TAB)\uxxxxCharacter with 16-bit hex value xxxx (Unicode only)\UxxxxxxxxCharacter with 32-bit hex value xxxxxxxx (Unicode only)\vASCII vertical tab (VT)\oooCharacter with octal value ooo\xhhCharacter with hex value hh

试试这一小段有趣的代码:

while True:for i in ["/" ,"-", "|" ,"\\" ,"|"]:print "%s\r" % i,


研究训练:

1、把这些转义字符放到记忆卡片中来记住它们。
2、使用'''(三个单引号)替代代码中的三个双引号,你能明白为什么可以替代而不出错吗?
3、使用转义字符组合使用来格式化字符串创建一个更复杂的格式化操作。
4、还记得 %r 格式化输出么?让 %r 和单引号双引号组合打印输出。让%r 和 %s组合使用,注意到 %r你输入什么样就输出什么样,但是%s只打印出你想要的样子了吗?

学生遇见的常见问题:

我始终不能完全弄明白租后一个练习,我应该继续往下学习吗?
答:是的,继续往下学,把你在每一次的练习中遇到不懂的东西记到笔记本上去。然后周期性的去过一遍笔记本看一下是否完成更多的练习后能够解决原来不明的东西。尽管有时候你需要回过头做些练习才能弄明白它们。

为什么让 \\ 与其他相比显得更特别?
答:这是一种输出一个 \ (下划线)简单有效的方法,想想你为什么要这个吧

当我写 // 或者 /n 的时候发现它们是无效的?
答:那是因为你使用的是正斜杠 / 不是用的反斜杠 \ ,不同的字符做的事情当然不一样啦。

当我使用 %r 来格式化,发现所有转义字符都无效了。
答:那是因为 %r 是你输入什么它就原原本本的输出什么,其中也包括输出原始状态的转义字符。可以使用 %s 来代替,但是你要记住: %r是用来调试的, %s是用来显示的。

我不理解研究训练中的第三条,你所说的组合转义字符来格式化是什么意思?
答:我只想告诉你的事情是所有的练习你都可以通过组合这些转义字符来解决,带你了解什么是转义字符并且通过这次练习写一些新的代码来使用这些转义字符。

''' 和 """ 哪个更好用?
答:  这完全取决于你的编码风格习惯,你现在可以先用'''(三个单引号)但是你应该随时准备跟随你的感受或者别人是怎么写的来选择适合你的方式。                 



0 0
原创粉丝点击