学会Python很难吗?我建议你应该看看这个

在我决心开始学编程的时候,由于工作很忙,每天只能抽出来1小时去学习编程。

那时候翻遍了知乎上大家推荐的国内外的书和课程,但教程中抽象枯燥的术语根本看不懂。

基础教程大多都是几十章的教程或者是上百个视频,一点点看下去感觉像是在从 A 到 Z 背字典,就算背下来了也不知道怎么应用。而教程里的例子大多是1+1、小明的身高这类低龄益智题,让我觉得很无聊,感觉学了也没什么用,提不起学习的兴趣。

那段时间学学停停,学到很难受了就停两天,就会觉得有点不服气,为什么我学不会呢?

后来我偶然看到了一个国外的博客,它里面用了一个车的例子,让我真正理解了方法和函数的关系。

那时候我突然意识到,原来抽象概念是可以学会的,只要跟自己的实际生活相关联,总能找到一些类比去理解抽象概念。

遗憾的是那个博客里面并不是每个概念都有这样的例子,于是我就试着自己去想象一些类比来帮助自己理解抽象概念,然后再敲一些简单的代码去验证,看看是不是和我猜想的一样的。

果然,我的编程学习效率高了许多,不到两周时间,我就过完了主要的 Python 基础知识,建立起了基本的知识模型。

回过头来想,之所以这种方法适合我,能让我学会,是因为我有了情景,我把编程用起来了。

这里我还是要推荐下我自己的Python学习交流群:五八八零九零九四二 不定期分享干货,包括我自己整理的一份2018最新的Python资料和零基础入门教程,欢迎各位小伙伴。

之前看很多教程,基本都是从第一章开始觉得会了,但实际上又不知道学的这个要怎么去使,这种感觉就一直在我的脑子里嗡嗡的转。到后来那一个概念我都看了六遍了,谁讲都那样,但还是不会使。

那些教程实际上讲的是语法规则,就是相当于告诉你这个是口字旁,口字旁加上其他的偏旁一般都和口的动作或者语气词有关,但是这个东西不能教会你说话。促使你学会说话的是情景。是你妈妈问你“宝宝你吃苹果么?”你就自然理解了吃的意思是什么。

而那些教程都在一丝不苟的教语法,但有了情景,我这样的初学者才能学会。

有了这段经历之后,我就特别能理解初学者的感受。

有些程序员会说:

“Python 很简单啊,看一遍文档就都懂了”(潜台词:我很聪明,我是学霸)。

“如果连 Python 都学不会,你就不要学编程了”(潜台词:只有我这样有天赋的人才能学编程)。

我觉得可能是他们做这一行太久了,已经忘了初学时的痛苦和挣扎了,人是会篡改记忆的,会认为现在拥有的都是轻松获得的,但真实的经历永远是坎坷曲折的。

继Python的正则式表达,今天给大家带来正则式的最后一篇文章:

前面讲了很多正则表达式的知识,上一篇也实战操作了一个关于字符串和时间处理的例子,很多同学觉得不过瘾,今天我们讲一个稍微复杂一点,并且是一个完整的实际应用的例子,温度转换小程序

需求:写一个小程序来获取用户的输入

若输入的摄氏温度就转换成华氏温度

若输入的华氏温度就转换成摄氏温度

这个程序比较有趣而且容易上手,那么如何用正则来处理呢,下面我们由浅入深来分析一下这个问题

Step1:我们先获取用户的输入,然后判断一下

1).我们先假设用户输入的都是整数温度(先从最简单的入手吧)

2).比如用户输入的是1位或者2位的整数

3).若正确就转换一下温度

22

Your input celsius temperature :22

match temperature :22

fahrenheit temperature :71

Step2:但是实际情况下温度是带小数的,而且最多2位小数

1).所以在正则的判断上要改一下,而且要用浮点数

2).注意同时还要能继续匹配不带小数的情况

若输入带3位小数的温度

22.223

match temperature :22.22

71.996

若输入1位整数的温度

9

match temperature :9

48.2

Step3:温度有零上也有零下,而且还可能是0度

我们继续分析改代码

1).温度有零上也有零下,可以在前面加+表示零上,-表示零下

2).温度也为0度的时候,所以第一个数字匹配从[0-9]

-12

Your input celsius temperature :-12

temperature:-12

fahrenheit temperature :10.4

Step4:

识别用户输入的是摄氏还是华氏温度,要用户结尾加C或F区分

1),先分析出用户输入的C/F,比如

celsius='-9.5C'

patt=re.compile(r'[-+]?[0-9][0-9]?(\.[0-9][0-9]?)?([CF])')

我们在上面的正则的最后加一段[CF]表示输入的可以是C也可以是F

2),我们要把[CF]用括号括起来,然后用groups()来获取,用来做温度类型判断

同时也要把[-+]?[0-9][0-9]?(\.[0-9][0-9]?)?括起来,因为要取前面的温度数字

celsius='-9.5C'

patt=re.compile(r'([-+]?[0-9][0-9]?(\.[0-9][0-9]?)?)([CF])')

m=re.search(patt,celsius)

if m:

print m.groups()

print m.groups()[-1]

('-9.5', '.5', 'C')

也就是说我们可以根据元组的最后一个元素来判断到底是C还是F,第一个元素来得到温度数值

3).问题来了,'-9.5'里面的'-'怎么办,温度转换需要数字啊,不急很简单

有万能的eval函数

celsius='-9.5C'

patt=re.compile(r'([-+]?[0-9][0-9]?(\.[0-9][0-9]?)?)([CF])')

m=re.search(patt,celsius)

if m:

print m.groups()

print m.groups()[-1]

temp_str=m.groups()[0]

print eval(temp_str)

('-9.5', '.5', 'C')

C

-9.5

Step5:

好经过前面的4步已经万事俱备了,可以完成代码了

1).我们只需要在前面的基础上把用户输入的温度,分成数字和温度类型

2).若是摄氏温度:

计算一下转成华氏温度

fahrenheit=(float(temperature)*9/5)+32

3).若是华氏温度:

计算一下转成摄氏温度

celsius=(float(temperature)-32)*5/9

是不是很简单哈,大家可以试着写写, 希望通过这个例子大家可以更快更灵活的掌握正则表达式的妙用

同时把前面的知识也连贯起来

需要源码的同学也可以后台跟我咨询

好了Python中的正则表达式实战进阶就讲到这里啦,正则表达式分享到此完结,希望能给初学者一些启发,若有什么不懂的,也可以留言跟我探讨交流.如果你觉得我的文章对你有帮助,希望你可以动动你的小手多多转发,帮助更多想要学习Python的求知者

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180106A0I50K00?refer=cp_1026

同媒体快讯

相关快讯

扫码关注云+社区