Python Lesson 7: 函数设计《外星人的向导》

外星文理解

小B谈了一个会外星话的女神,外星人说 "我爱你" 不叫 "我爱你",叫 "岗踢查"
具体怎么对应的呢,"我" -》"查" , "爱" =》 "踢" ,"你" =》 "岗" ; 注意到没有,首先查字典,然后还要倒过来念我去!
所以小B谈的可累了,满脑子都记住一本外星字典,才能跟上女神的节奏

想想看,怎么用python实现这个外星文翻译器呢?
再这样下去,小B快疯了

难点实现

在这个翻译程序中,可以分为两个部分
1,查字典部分,假设给一个字母 'x' 可以查出对应的外星文 'x1'
2,把翻译出来的字符串,反转过来,也就是把 'abc' 变成 'cba'

我们设计一个逻辑来做字符串的反转:
我们从最后一个字符开始取,想象一下list列表里最后一个位置,应该是 length-1 (总长度减1)
每取到一个字符就把它放到结果字符串末尾,并且位置-1(不停的往前移动位置)

dict字典

我们要实现查字典的功能,在python中需要用dict字典类型来存储key-value数据
你把 dict 想象成一个list ,只是这个list列表的下标 不是0,1,2,而是任意的类型,其中就包含字符'我','爱', '你'
思考一下,我们如果有一个dict,key分别是 '我','爱', '你' ,那么他们这几个key对应的指是多少呢?

函数设计

如果我们设计两个函数,一个是汉字转外星文,一个是外星文转汉字
想象一下,小B是不是可以跟女神沟通了
进一步思考,这两个函数的输入参数,和返回分别是什么?
这两个函数,输入分别是某一种文字的字符串,返回则是翻译好的另一种文字


只要稍微思考下,这两个函数的具体过程很像
我们都需要通过查字典和反转这两个逻辑来实现
其中查字典用到 dict数据类型,反转用到我们之前设计的反转算法

在具体实现过程中,发现两个函数实在太像了,所以呢,很多代码就直接copy了

优化

我们知道在上面实现过程中,我们其实copy了很多代码,然后稍微改改?
这种情况让我们想到了 铁律8,要是有被copy来copy去的代码,说明可以设计一个新的函数了

根据我们的copy经验,我们设计了两个新的函数 chazidian 用于查字典
fanzhuan用于字符串反转

一旦这样实现,那两个翻译函数就只需要组装这两个函数即可?
不知道你对函数的设计有没有一点滴的感觉了呢?

进一步练习

Sorry but the SQLBolt exercises require a more recent browser to run.
Please upgrade to the latest version of Internet Explorer, Chrome, or Firefox!

Otherwise, continue to the next lesson: SQL Lesson 2: Queries with constraints (Pt. 1)
Python小机器人嘴巴会打印东西,还可以拖动
练习 do it — 请完成如下任务
我不会做求助!求助!

继续努力 学下一节