学习了一年的计算机,其中掌握了C语言和C++的一些基础的语法,算是一个入门小白。然后对Python有很大的兴趣,就在中国大学MOOC上看了北京理工大学Python语言程序设计(崇天)这门课,感觉讲的很好,看完视频我决定自己总结一下,其中的案例代码也来源于MOOC。
目录
二、函数的控制结构
三、函数和代码复用
四、文件和数据格式化
基本开发环境IDLE
Python官方环境:Python解释器+IDLE开发环境
高级开发环境
第一步:安装IDLE环境
第二步:安装VSCode
下载地址:http://code.visualstudio.com
首先基础语法如下:
-
基本数据类型及操作
个人感觉Python的数据类型其实和C语言差不多,但是复数和字符串又有区别,所以我会重点看这里。
.整数
有不同的进制表示形式,十进制,二进制,八进制,十六进制,与C语言无异。
介绍pow(x,y)函数,作用是计算XY,数值大小无限大
.浮点数
重点要记住的是浮点时间运算存在不确定尾数,不是bug。当然,也可以用成员中的E作为幂的符号,例如4.3e-3值为0.0043.
介绍round(x,d),作用是对X四舍五入,d是小数截取位数,因为不确定尾数一般发生在10-16左右,所以使用round()十分有效。
.复数
这是从语言中没有的,但是它与数学中的复数的概念一致,有着实部和虚部。例如:z = 1.23e-4 + 5.6e +89j, z.real获得实部,z.imag获得虚部。
.字符串
这里的字符串与C语言有相似的,也有不同的,来归那一下吧。
首先表达方式有四种,’ ‘’ ‘’’这三个符号来表达。
字符串的使用是很神奇的,我们来介绍一下
用[ ]获取字符串中一个或多个字符
索引:返回字符串中单个字符 <字符串>[M]
切片:返回字符串中一段字符子串 <字符串>[M:N]也有[M:N:K]的表达,K表示步长。
***字符串的操作符(这是C语言里面所没有的,很神奇哦)
x+y连接两个字符串x和y;
x*n或n*x复制n次字符串x;
X in s 如果x是s的子串,返回ture,否则返回false。
***字符串的操作函数
Len(X)返回字符串x的长度
str(x)任意类型x对应的字符串形式
Hen(x)或oct(x)整数x的十六进制或八进制小写形式字符串
Chu(u) x为Unicode编码,返回其对应的字符
Ord(x) x为字符,返回其对应的Unicode编码
…字符串处理方法和类型格式化
str.lower()或str.upper() | 返回字符串的副本,全部字符大写/小写 | 字符串处理方法 |
str.split(sep=None) | 返回一个列表,有str根据sep被分隔的部分组成 | |
Str.count(sub) | 返回子串sub在str中出现的次数 | |
Str.replace(old,new) | 返回字符串str副本,所有old子串被替换为new | |
Str.center(width[,fillchar]) | 字符串str根据宽度width居中,填入fillchar | |
Str.strip(chars) | 从str中去掉在其左侧和右侧chars中列出的字符 | |
Str.join(iter) | 在iter变量除最后元素外每个元素后增加一个str |
字符串格式化
<模板字符串>.format(<逗号分隔的参数>)
其中槽内{}对格式化的配置方法就是填充、对齐、宽度、千位分隔、精度、类型。
.数值运算操作符
不外乎于加减乘除,但是需要注意//是整数除,X**Y是幂运算Xy。其中二元操作符与C语言一致,运算符之间的运算也有类型转换的问题。类型之间混合运算,生成结果为最宽的类型,有整数->浮点数->复数(最宽)。
.数值运算函数
Abs(x)取绝对值;
divmod(x,y)商余,同时输出商和余数,相当于(x//y,x%y)运算,结果以元组的形式给出;
Pow(x,y[,z])幂余,相当于(x**y)%Z;
Min(x1,x2,...xn)返回最小值,max与之对应返回最大值;
当然还有C语言里面的强转,有int(x),float(x),complex(x)的运算。
-
函数的控制结构
.分支结构和异常处理
与C语言分支结构的类型一致:单分支,二分支,多分支,条件判断与组合,只是表达上面有着一些差别,例如:if:语句 else:语句,C语言是没有这样的冒号表达的。当然异常处理也与c++中的try,catch,throw有着异曲同工之妙。基本使用有:
Try:
<语句块1 >
except:
<语句块2>
至于条件判断也是一致的,逻辑运算符与或非表达的也是不变。
.遍历循环、无限循环
这里的循环也与C语言有相似的地方,但是却比C语言简化了很多,相比C语言的循环要比Python的循环要详细一点。这里也用for,while保留字来进行循环的操作,但是格式却是不一样的。
for <循环变量> in <遍历结构>:
<语句块>
从遍历结构中注意提取元素,放在循环变量中,并执行一次语句块。
while <条件>:
<语句块>
反复执行语句块,直到条件不满足时结束。
当然在循环里面也有成员的循环控制保留字,break和continue它们的作用于C语言是一至的。
-
函数和代码复用
.函数定义和使用
这里的函数的使用学习的时候感觉要比C语言轻松一点,好像简化了很多,怪不得说一生很短,我学Python。但是灵活运用的话又有很多脑经急转弯的地方。
定义的格式:
def <函数名> (<参数>) :
<函数体>
Return <返回值>
其它的函数的调用,参数的传递,返回值与C语言是一至的。局部变量和全局变量的理解也是一致的。另加lambda函数的介绍,这个是定义一个没有函数名的函数,因为比较少用,所以就不深入了解了。
.函数递归
这里的递归在C语言与c++里面都有介绍,及要有链条(计算过程存在递归链条),基例(存在一个或多个不需要再次递归的基例)。
-
***组合数据类型
这是之前都没接触的,应该也算是Python的魅力之一。
集合类型 | |||||||
集合的定义 | .类型与数学中集合的定义一直,有无序性,特殊性,还有不可以更改。 .集合用{}表示,建立集合类型用{}或者set(),建立空集合必须用set() | ||||||
集合操作符 | 与数学中集合间的操作一致,有交‘|’,并‘&’,补‘^’,还有差‘-’。其中还有>=,>,<=,<等判断集合包含关系的操作符。 | ||||||
集合处理方法 |
如果x不在集合S中,将X增加到S | S.discard(x) 移除S中元素X,如果X不在集合中,不报错 |
移除S中所有元素 | S.pop() 随即返回S的一个元素,更新S,若S为空产生KeyERROR异常
| S.copy() 返回集合S的一个副本 | Set(X) 将其他类型变量X转变为集合类型
|
|
序列类型:元组和列表 | |||||||
序列类型定义 | 序列是以为元素向量,元素类型可以不同。数列是一个基类类型,特殊的有字符串类型,元组类型,列表类型 | ||||||
序列处理函数及方法 | 序列也满足字符串的操作符,比如in,not in,*,还有索引很切片。 函数方法也是与字符串类型一致,长度,最大最小元素,当然还有之前不认识的。 S.index(x)或s.index(x,i,j)描述为:返回序列S从i开始到j中第一次出现元素x的位置。 S.count(X)描述为:返回序列S中出现X的总次数 | ||||||
元组类型及操作 | 定义:元组是一种序列类型,一旦出创建就不能被修改,用()或者tuple()创建,元素间用逗号分隔,可以使用或者不适用小括号。
| ||||||
元组类型操作,与序列有的操作一致 | |||||||
列表类型及操作 | 定义:列表是一种序列类型,创建后可以随意被修改。使用[]或list()创建,元素间用逗号分隔,列表中个元素类型可以不同,无长度限制。 | ||||||
列表类型操作函数和方法 | |||||||
Is.append(X) | Is.clear() | Is.copy() | Is.insert(i,x) | Is.pop(i) | Is.remove(x) | Is.reverse() | |
在列表is最后增加一个元素x | 删除列表Is中所有元素 | 生成一个新列表,赋值Is中所有元素 | 在列表Is的第i个位置增加元素x | 将列表中的第i个元素取出并删除该元素 | 将列表Is中出现的第一个元素x删掉 | 将列表Is中的元素反转 |
字典类型 | |||||||||
定义 | 首先理解映射,就相当于数学里面函数的xy的关系。映射在这里是一种键(索引)和值(数据)的对应。 字典是键值对的集合,键值对之间无序。采用大括号{}和dict()创建,键值对用:表示。用[]来向字典变量中索引或增加元素。 | ||||||||
字典类型操作函数和方法 | |||||||||
Del d[k] | K in d | D.values() | D.keys() | D.items() | D.get(k,<default>) | D.pop(k,<default>) | D.popitem() | 还有d.clear和len(x) | |
| 删除字典d中键k对应的数据值 | 判断键k是否存在字典d中,如果在返回Ture,否则返回False | 返回字典d中所有的值的信息 | 返回字典d中所有的键信息 | 返回字典d中所有的键值对信息 | 键k存在,则返回相应值,不在则返回<default>值 | 键k存在,则取出对应值,不在则返回<de | 随机从字典d中取出一个键值对,以元组形式返回 | 与之前的定义是一样的 |
-
文件和数据格式化
.文件的使用
文件的使用在Python中也是与C语言一致的,只是格式也有点不一样。文件的类型就是文本文件和二进制文件,但是他们储存其实都是二进制的储存方式。文件的打开关闭也是一样,还有内容的读取、写入。
格式有:
<变量名> = open(<文件名>,<打开模式>)
打开模式‘r’,’w’,’x’,’a’,’b’,’t’,’+’。
其中内容的读取和写入需要强调一下
文件内容的读取和写入 | |
<f>.read(size=-1) | 读入全部内容,如果给出参数,读入前size长度 |
<f>.readline(size=-1) | 读入一行内容,如果给出参数,读入该行前size长度 |
<f>.readlines(hint=-1) | 读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行 |
<f>.write(s) | 向文件写入一个字符串或字节流 |
<f>.writelines(lines) | 将一个元素全为字符串的列表写入文件 |
<f>.seek(offset) | 改变当前文件操作指针的位置,offset含义如下:0-文件开头;1-当前位置;2-文件结尾 |
.一二数组的表示储存和处理
这里一二维数组和C语言是一致的,而且也比较好理解,这里提醒记住一般索引习惯:Is[row][column],先行后列。(还有一个CSV格式的文件可以理解一下,用for循环+.split()和.join())。