破解密码那些事儿(chapter 4,字符串的故事,上)

本章节的内容涵盖
字符串
字符串的拼接和复制
使用IDLE来写程序
保存并通过IDLE运行程序
print()函数
input()函数
注释

对于整形数和数学操作的介绍,前面两个章节已经够多了.毕竟Python又不是个计算器是吧.在这个章节里头,我们会学习如何存储文本到变量里,学习如何将不同的文本拼接起来,并且如何把他们显示到屏幕上.我们将要完成我们的第一个程序,通过程序向我们自己打招呼,这是个激动人心的时刻!

字符串

在Python中,对文本的操作我们称为字符串操作,简称字符串.从这以后的章节,我们需要处理的都是文本的内容,比如将明文'One if by land,two if by space.'转变成密文'Tqe kg im npqv, jst kg im oapxe.'明文和密文,在计算机里头,其实就是个字符串,然而Python提供了很多字符串的操作方法.
对我们而言,存储字符串类型的值和存储整形数与浮点数的操作并没有什么不同.当我们敲入字符串的时候,我们把值放在两个单引号(')中间,表面他们是字符串.下面是例子

Paste_Image.png

单引号并不是字符串的一部分.Python是个聪明的家伙,能够知道'hello'是个字符串,而且明白变量spam存储的是单引号里头的内容hello.
如果你在命令行里头敲入spam的话,你会看到spam存储的值会被打印出来.因为Python会去推演存在变量里头的值,在这里例子里,就是字符串'hello'.

字符串的值几乎涵盖了键盘的所有字符,请注意,我说的是几乎,那些剩余的字符我会在后面的章节讲解。
字符串例子

不知道你们注意到了没有,''这个字符串没有包含任何的字符,所以我们称之为空字符串

字符串拼接

用“+”可以实现将两个字符串拼接起来,专业名词字符串拼接就是这个意思。尝试一下在命令行敲入“Hello”+“World!”(这是一个伟大的程序员打招呼的方式,每个程序员接触一个新的语言做的第一个程序通常都是这个,意味着编码的环境搭建好了,最简单的程序范型已经实现,可以驾驭计算机改变世界了!WOW!):

HelloWord

如果在‘Hello’和‘World!’的中间加一个空格该如何操作呢?很简单,只需要在‘Hello’的末端加一个空格:
Hello world

请记住,Python只会在你让他连接字符串的时候才会执行这个操作。如果你想在字符串的中间加上空格,必须自己手动加上一个空格。
有没有发现“+”操作符不是普通的加法运算这么简单,还可以连接两个不同的字符串然后获得一个新的字符串(‘Hello ’+‘World!’等于‘Hello World!’),但是操作起来和算数加法并没有两样。这是为什么呢?因为Python知道同一种数据类型通过“+”操作符能完成什么操作,而每一个数据都有他们自己的数据类型。‘Hello’的数据类型是字符串,而5的数据类型是整形数。数据类型会告诉我们(或计算机)这是一个什么数据,有什么操作方法。(聪明的你可能会发现我自己定义一个类型的话,‘+’操作符怎么操作,那就要自己定义了,这是高级属性!)
有的朋友看到“+”可以连接两个值,比如两个字符串或者两个整形数,可能就会想如果一边是字符串一边是整形数,那会有什么样的结果呢?这位同学的问题很棒,但是你如果在命令行敲入下面的语句的话,你看到的将会是错误,因为这样的操作并未被定义过:
‘Hello’+42的错误

“字符串的乘法”

如果说在字符串操作里头‘+’操作符可以看做是加法的话,那么同样的‘’操作符可以看成是乘法。字符串的‘’操作是连接字符串和数字完成字符串复制,最后会返回多个和自己一样的字符串的拼接。请看下面的例子:

字符串乘法

和'+'操作符不一样的是,两个整形数可以返回他们的和;两个整形数通过‘’也可以获得他们的积,但是两个字符串用‘’连接,是会出错的:

以上的两个操作,可以看出了字符串操作和整形数操作的异同。

通过print()函数输出值

在python中有一种特殊的指令叫做函数,print()函数是最常用的函数。请看例子:

print()函数

函数通常是一堆打包好的代码,他们可以完成一项或几项操作的指令,比如print()可以把变量的值输出到屏幕。Python自己也有很多这样不同功能的函数。调用函数意味着执行这些打包好的操作。
上面的例子中print()函数把放在它括号里头的变量的值输出到屏幕。这种把数值传递到函数中处理的方式,叫做参数传递,而变量或者值自身就是参数。当我们开始写程序的时候,我们经常都会用到print()这个函数把文本输出到屏幕中去。
print()可以接受一个表达式作为参数,而并非只能接受一个变量或者一个值。因为表达式最后可以推导出一个值来替换掉这个表达式,如果一个表达式无法推导出一个值的话,这个操作是会出错的。
字符串拼接表达式作为参数

‘Hello, ’+spam这个表达式,可以推导出‘Hello, ’+‘Al’,最后变成‘Hello, Al’然后输出到屏幕中去。

转义字符

有时候,我们会想用到一些不容易敲入到电脑的字符。比如想敲入一个单引号到程序里头,但是通常程序会以为这是字符串开始的标记,然后程序就返回一堆错误,因为Python期望还有另外一个单引号来终结这个字符串。请看例子:


单引号引入的错误

如果想解决上面的例子中的问题,我们就要使用转义字符。用\开始的字符,Python就会认为这是个转义字符,不会看成是程序约定语法的一部分。比如\t,\n,和'就是三个转义字符。Python遇到转义字符就会把这些看做是一个字符而不是具有语法意义的标志:


转义字符

常用的转义的字符如下图所示,都是一些我们在源代码里头难以打出来的字符:
转义字符列表

因为斜杠已经作为了转义字符的标志,所以如果要打入斜杠的时候也必须加上加上转义用的斜杠,不然的话:


斜杠的转义

因为tea的t和前面的斜杠让Python误认为,你要是输入一个Tab键的值,所以必须加上转义才能打出斜杠:
斜杠的转义2

单引号和双引号

对于字符串而言,除了可以用单引号来标示,也可以换成双引号。下面两个语句表示的其实是同一个意思:



Paste_Image.png

但是不要以为用单引号与双引号的组合也可以标示一个字符串,这是会报错的!


不要这么淘气

对计算机而言无论是单引号还是双引号,都能很好的识别出那是字符串。但是对于我来说我更倾向单引号,因为双引号必须按住shift键。请注意的是,无论是单引号还是双引号,如果你需要它变成你字符串内容的一部分,还是需要加上斜杠来做转义。请看如下例子:
单引号和双引号转义的例子

从上面的例子也可以看出,在双引号里头出现的单引号和在单引号里头出现的双引号是不需要转义的,你看Python还是很聪明的!

又到做练习的时候了!

1.请问,在命令行输入下面的语句,输出的会是什么?
>>> spam = 'Cats'
>>> spam

2.请问,在命令行输入下面的语句,输出的会是什么?
>>> spam = 'Cats'
>>> spam + spam + spam

3.请问,在命令行输入下面的语句,输出的会是什么?
>>> spam = 'Cats'
>>> spam * 3

4.请问,在命令行输入下面的语句,输出的会是什么?
>>> print("Dear Alice,\nHow are you?\nSincerely,\nBob")

5.请问,在命令行输入下面的语句,输出的会是什么?
>>> print("Hello" + 'Hello')

答案
1.Cats
2.CatsCatsCats
3.CatsCatsCats
4.Dear Alice,
How are you?
Sincerely,
Bob
5.HelloHello

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,194评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,058评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,780评论 0 346
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,388评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,430评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,764评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,907评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,679评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,122评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,459评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,605评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,270评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,867评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,734评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,961评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,297评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,472评论 2 348

推荐阅读更多精彩内容