第7节课有三个部分:A,B,C。没有顺序。
目前为止,我们只是简单的使用了字符串(类型是str
)。这门课我们会对字符串做出一些处理:分离、组合字符,查看字符串中单独的字符。
什么是字符?
计算机里的数据基本上都是以 0 和 1 的序列形式储存的:比如文本,电子书,图片,歌曲,视频,"可执行文件"如游戏和应用。字符串是一种文本数据,以如下形式储存:
- 字符串是一系列字符组成的(比如,字符串"Hello, World!"包含13个字符,如"H","e"和标点" ","!"。
- 每个字符实际上由一个数字表示("H"是由40表示;这是美国信息交换标准代码/统一码)
(数字是以0-1二进制形式储存。)
将字符串看作为字符的序列: S[]
为了对字符串进行操作,我们需要提取出字符串里的每个字符。在Python中,这是以如下方式进行:我们有一个字符串S
和一个整数index
,
S[index]返还了字符串
S
中的第index
位字符。按照惯例,字符串以索引0开始:所以S[0]
是第一个字符,S[1]
是第二个字符,以此类推。在"Hello, World!"中:
索引:0 1 2 3 4 5 6 7 8 9 10 11 12 字符: H e l l o , W o r l d !注意:索引6是空格。
在很多其他的编程语言中,字符另有一个类别。在 Python 中,字符是长度为 1 的字符串,所以他们的类型 是 str。 。 |
得出字符串的字符个数:len
为了得到字符串中的字符个数,我们使用Python中的方程len
。比如,len("Hello, World!")
得出13。
S
中最后一个字符?len(S)
得出字符串的字符总数,但因为索引是从0
开始,最后一个字符的索引是len(S)-1
。下面是一个使用len
和[]
的例子。
截取字符串:S[:]
截取字符串的某一部分会给你一个子链。比如,字符串"eat"和"ted"是"repeated"的子链。为了在Python中提取出一个子链,我们要用到
S[firstIndex:tailIndex]来获得子链,从索引firstIndex开始到tailIndex-1结束。在运行下列程序前先想一下下列程序的输出都是什么。
注意在截取子链的时候,firstIndex是包括在子链里的,而tailIndex是不包括的。这是一个常犯的错误。然而,它也有一些好的作用。比如,因为这种形式,子链 s[i: j]的长度是总是 j-i。这一管理常常被描述成一把尺子: |
粘贴字符串:+
我们知道1+2=3。对于字符串来说,我们却得到的是如下结果:
正如你所看到的那样,S+T
会得出一个由S
和T
依次连接的新字符串。这个字符串粘贴操作也叫做连接符。
如果想要连接数字,那么就需要先把数字转换为字符串。否则的话就会得到两种错误中的一个,根据你尝试的顺序。运行这个程序,观察会得到什么错误。
这是一个正确的例子:str() 方程可以在连接前使数字转变成字符串。
|
正如我们在第四课提到的那样,你可以将字符串与整数相乘:S * n
代表S + S + ... + S
。
字符代码:ord
, chr
在我们这节课的序中提到了计算机将每个字符用数字表示。那么到底哪一个数字代表了哪一个字符呢?通常来说取决于你的电脑使用的编码,但是现在几乎所有的计算机都使用一套通用的从32到255的编码。下面是一系列从32到127的编码及所代表的字符:
ord: 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 chr: ! " # $ % & ' ( ) * + , - . / ord: 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 chr: 0 1 2 3 4 5 6 7 8 9 : ; < = > ? ord: 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 chr: @ A B C D E F G H I J K L M N O ord: 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 chr: P Q R S T U V W X Y Z [ \ ] ^ _ ord: 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 chr: ` a b c d e f g h i j k l m n o ord: 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 chr: p q r s t u v w x y z { | } ~在之后的第八节课里,你将编写一个程序来导出这个表。
将整个表都记住其实没有很大用处,但是有一些数据记住的话会有帮助:
- 小写字母a, b, c, ..., z字符代码是连续的
- 大写字母A, B, C, ..., Z字符代码是连续的
- 数字0, 1, 2, ..., 9字符代码是连续的
32代表空格,127代表“控制”字符(比较特殊)。有一些控制字符,如9代表tab,10 和13代表换行.
在 Python 中,你可以通过使 用 ord 方程将一个字符转变为 相应的数字编码。chr
方程做得是相反的事情:将一个数字转变为相应的字符。
有一些系统只支持从32到127之间可打印的字符;其他的程序接受的可打印的字符可达255或65535;通用码中有成千上万个字符。here or 这里有更多关于这个的历史。 |
下面是两个练习题。
该学习下一节课啦!