今天是正式学习python的第一天,由于之前有编程基础,学过c语言,懂点c#,所以基本上刚开始学起python还是相对来说没有那么多障碍,感觉python这种语言是真的比c语言和c#写法要自由,不需要一上手就是#include<stdio.h>或者一大堆using(作为一名编程小白的一点点认识,大神们希望不要笑),还有就是为什么我要开通博客来写自己的经历呢,很多人会想,写博客的时间还不如多学点知识或者多复习一点,我之前也是这种争分夺秒的想法,后来(也就是前几天,嘿嘿)我看了一篇大牛的心得,他说现在是快速社会,每个人相见都是先看实物,所以人们要学会包装自己(当然对于我们这群理工生来说,一个包装自己的好方法就是写博客),一方面,可以记录自己的点点滴滴,一方面以后出去找工作面试等等跟别人说你会很多知识,但是没什么很具体,马上能证明自己的东西(当然还有很多别的方法,做好博客只是一个路径吧),这时候一手好博客就很能直接了当的证明自己的实力,证明自己还是有点实力,嘿嘿嘿,不多比比了,我们来进入主题吧。

一:hello World

     关于python,我学习的第一件事就是照着敲了个hello World程序(我无论是学c++还是c#时候都是从hello World开始,感觉就像一场仪式一样,加冕为皇,哈哈,扯远了),python的hello World程序是我学过的语言中最简单方便的,就直接一句print "hello World!"就能解决了,c语言上手就是一个头文件声明#include<stdio.h>,然后就是int main(){printf("hello World!\n");},c++的话也是一个头文件#include<iostream>,然后就是using namespace std;int main() { cout<<"Hello World"<<endl; return 0; }一对比起来感觉还是python顺手,一句print就给你来问好了。

     入手这个hello World之后我就算正式开始我的python之旅了,我主要是用python来写NAOqi的盒子,也不算写吧,就是修改一些参数或者函数之类的,主要是八月底要去参加一个比赛,算是临阵磨枪吧,我刚开始是下载的python2.7,后来发现python官网上推荐用python3,我就转python3,而且在学习过程中也发现了一点点python2和python3之间的不同,第一个不同就是python3中没有长整型这个概念,这样就不用担心整型溢出了,这样感觉就是python的一个改进,一般用python2.7时

当超过2^63-1之后type之后就会自动转为long型,我在python3中测试就是下面这个样子

虽然目前还没有感受到这个的好处,但估计以后会感受到这个的好处,好吧,这个点就介绍到这里,我们进入到下一个进化版print

 

二:变量

这个就是升级版,加了个变量name,嘿嘿,此处其实括号可以去掉,加不加无所谓,当然,这只是简单的,有时候还是必须要加上去,python中变量非常自由,不用先定义类型,直接用变量名=变量值,而且我感觉跟c#,c++和c最不同的就是它不用;,刚开始是有点不习惯,今天一天终于有点适应了,不知道以后再敲c还会不会习惯,变量感觉没什么好学的,我就直接了解了写法直接跳了。

三:数据类型

感觉数据类型还是今天我学了的一个大块内容,今天大概了解了python的布尔类型,整数,浮点型,数字,字符串,元组,列表,字典。

布尔类型,整数,浮点型,数字在我编程基础上我就直接跳了(小白偷懒,哈哈),我重点了解了序列及其相关的,首先字符串,字符串定义的话我接触的有三种吧,一种单引号,一种双引号,一种三引号,大概就是下面这三种

元组,列表,字典三个感觉就相当于三兄弟一样,命名时分别是(),[],{},从小到大,元组跟列表感觉差不多最主要的差别大概就是元组不能修改,列表能够修改,元组是(),列表是[],下面示例个简单的元组命名

 

列表命名大概就是下面几种吧

他们俩像吧,我就感觉贼像,除了元组不能更改,其余就差不多的。

元组的话还有一个要注意的地方,就是当元组只有单一元素时必须要加个逗号,像这样 t1 = (2,) 这样才能被识别为元组,空元素的元组就是t2=(),一般来说元组可以用来保存那些不想改变的函数或者定义之类的。

列表就是一个可变数据类型,一般来说操作有(取值,添加,删除,修改,查找),当然这些操作很多都要用到python的内建函数(就是python已经写好了的函数,可以直接调用,类似c中的库函数吧)

取值操作的话就是索引和切片,总共有三种情况吧,当有1,2,3个参数

当只有一种参数时候:

图中第一种就是切除第一个,第二种就是只取第一个,第三种就是从头开始,每隔一个取一个。

当有两个参数时:

两个参数的第一种第一个参数是开始位置,第二个就是方向和间距,负数就是左,正数就是右

三个参数时:

第一种就是从头到尾,将数组反转,返回[6,5,4,3,2]

第二种就是从左到右,间距为2

大致就是这几种情况,我讲的还是比较模糊,如果真的具体的话其中还是有些许韵味值得探寻。

字典{}:字典是唯一的映射类型(存储无序),关于映射类型的具体说法我不太清楚,大致就用一个具体例子来解释吧

key和value的关系就是映射,当命名了之后就可以直接用key值来返回value的值,字典就是由一组或多组key和value组成的,并且key不能由列表,字典来命名,key和value的关系是一对一的关系,很重要的一点就是字典是无序的,每组key-value之间是无序的,字典的key必须是不可变对象,但是字典对象可变,并且一个字典中可以使用不同类型的键值,关于字典还有一些内建函数可以对其进行操作,keys()和values()就可以返回键列表和值列表,items()可以返回包含键值对应的元组,关于字典的命名还有一些内建函数的方法,例如:使用工厂函数fdict = dict(['x',1],['y',2]),ddict = {}.fromkeys(('x','y'),-1),这两种我也没太具体分析过。

大致数据类型就这些记录吧,其中还有很多数据类型操作,如果还要细写的话估计今天晚上是睡不了了,明天还要继续速成,我也就不多比比了,稍微提个大概,对字典进行操作有更新字典(一般直接用键值访问更新,内建的update函数可以将整个字典内容拷贝到另外一个字典),删除字典(del dict['a']  删除字典中键值为a的元素,del dict.pop('a')   删除并且返回键值为a的元素  del dict.clear()  删除整个字典中的元素  del dict  删除字典)还有一些与字典有关的内建函数如下(偷个懒,截图发一下)

这是摘取的园里一位大神的,十分感谢,希望大佬不会怪我,感觉学习生活中能够有很多大神提供资料和经验还是一件非常幸福的事,所以说我时常怀着一颗感恩的心,哈哈,扯远了,不过还是要感谢学习中给我帮助的各路大神。

四:包和模块

关于包和模块我感觉就跟c中声明头文件差不多,此处也就不多比比了。

五:循环语句和函数书写

if while switch这几个经典结构我也不多赘述,以前就经常接触,主要是写法有点不同,思想还是差不多,子函数的书写也是类似c的,不得不感慨以前听大牛说的一句话,万物基于c(此处可能有些夸张,哈哈,希望不要喷)。

六:正则表达式

正则表达式其实感觉就像一门小巧的结构符号语言一样,在很多数据处理等等地方都要用到,它的基础一元符号主要有(. ^ * + ? $ {} [] \ | ())

. :匹配任意字符,换行符 \n 除外

:匹配前一个字符0次或无限次
? :匹配前一个字符0次或1次

.* :贪心算法,尽可能的匹配多的字符

.*? :非贪心算法

() :括号内的数据作为结果返回

[]: ---------------常用来指定一个字符集:[abc];[a-z]

   ----------------一元字符在字符集中不起作用,[akm$]

 -----------------补集匹配不在区间范围内的字符:[^s]

^:匹配行首

$:匹配行尾

\:转义字符,单独使用的话可以将任意字符转换成普通字符

*:指定前一个字符可以被匹配0次或者更多次

+:与*类似,但是区别在于+匹配的成员最少出现一次

?:匹配一次或者0次,可以认为它用来标识某事物是可选的(也就是可有可无)(最小匹配的意思吧)

{m,n}:-----其中m和n是十进制整数,限定范围

           ------{0,}等同于*,{1,}等同于+,{0,1}等同于?

上面大致就是正则表达式的一些一元字符及其相关作用,应该不全,毕竟还是刚刚接触,不可能认识那么周全

一般使用正则要引用模块import re

一般常用的方法有

findall:匹配所有符合规律的内容,返回包含结果的列表

Search:匹配并提取第一个符合规律的内容,返回一个正则表达式对象

Sub:替换符合规律的内容,返回替换后的值

match:只在开头匹配

finditer:找到re匹配的所有字符串,并把他们作为一个迭代器返回

group:返回被re匹配的字符串

start():返回匹配开始的位置

end():返回匹配结束的位置

span():返回一个元组包含匹配(开始,结束)的位置

subn:替换多个,类似sub

split:切割作用正则表达式的一些编译标志:flag

标志                                含义

S                             使匹配包括换行在内的所有字符

I                              使匹配对大小写不敏感

M                            多行匹配,影响^和$

L                             做本地匹配识别匹配

X                           使匹配组织更加清晰易懂

接下来用网上找的几个例子来结尾吧

1:python中的原始类型字符串

2:使用re.match()查找-匹配开始

3:使用re.search查找-匹配任意位置

4:使用re.findall--所有匹配对象

5:使用match.start和match.end方法

6:使用 mathch.group 通过数字分组

7:使用match.group通过别名来分组

同时还要注意一个概念:分组(就是对正则表达式的应用)

到此我的第一篇小菜鸡随笔就到这了,我实在忍不住想睡觉了,希望大牛们能够给意见,多支持,小白在此也谢谢了