mooc-python语言语法week3-6

week3

1、类型的概念:程序编程不允许有歧义的数据类型存在,所以对数据进行了划分,python语言类型分为,数字类型、字符串类型、元组类型、列表类型、文件类型、字典类型。

i:数字类型:

python语言包括三种基本的数字类型:整数类型,浮点类型和复数类型。

整数类型可以是十进制、十六进制、二进制和八进制。pow(2,pow(2,15))计算结果有很多很多位,那到底该怎么判断有多少位呢?我们带着这个疑问去学习本节课。整数类型没有限制。

浮点数类型,在计算机上有专门的浮点数运算模块,浮点数和整数一般分开不同的类型。浮点数精度有限制,不同的计算机精度不一样,sys.float_info 可以查看计算机的浮点数精度。因此,我们只要不是及高度的计算,一搬认为浮点数也是没有限制的。

科学计数法表示的浮点数96e4、4.3e-3、9.6E5、0.0、-0.3、77.8.

复数类型:

三种数字类型的关系:1)存在一种逐渐扩展的关系,整数-》浮点数-》复数(整数是浮点数的特例,浮点数是复数的特例。不同数字类型之间可以进行混合运算,运算后生成结果为最宽类型。13+4.0=17.0(整数+浮点数=浮点数)

2)三种类型可以相互转换int()\float()\complex(x) 将x变为复数。int(4.5)=4,float(4)=4.0,complex(4)=4+0j,如果将复数像浮点数和整数转换会报错。如果需要将复数转换成整数或者浮点数那需要用到具体的函数将复数的虚部先转换一下。

数字类型的判断:type(x)返回x的类型,适合于所有类型的判断。

数字类型的运算:整数类型和浮点数类型最为常用。python提供了12个内先运算符和函数,+-* /等等对这两个类型开展运算。 python通过math库提供更多的运算。

ii:字符串类型:

1)字符串也有切片。可以遍历字符串中的每一个字符。字符串也有很多的函数,例如:upper()将字符串中的字符变成大写、lower变成小写、capitalize首字母大写、strip()将字符串两端的空格去掉或去掉两端指定字符、split()按指定的字符来分割字符串为数组、isdigit()判断是否是数字类型,如果是返回True否则False、find()按照指定内容来搜索字符串、replace()替换字符串中的内容,字符串有近百的函数我们这里没有一一列出,在实际的工作中满满积累字符串使用的函数。 字符串可以打印出转义字符或者空格,例如“hello\nworld\nmasisi”print()以后输出是hello

                                   world

                                  masisi。字符串类型可以通过+或者*进行连接,如:3*“hello”比变为了‘hellohellohello’。len()函数可以返回一个字符串的长度,例如:len(“hello”)返回5。大多数数据类型都可以通过str()来转换成字符串,例如数字类型、浮点数、科学计数法,str(123)“123” str(12.3)“12.3” str(123e+10)

2)有一个小例子:输入一个月份数字,返回对应月份名称缩写。

   使用ipo方法进行分析:输入:输入月份的数字

处理:利用字符串中基本操作来实现这个功能

输出:月份名称缩写

iii:元组类型tuple,元组可以包含多个元素,多个元素之间用逗号分开,t1=123,456,"hello"数字和字符串只包含list一个元素。元组可以是空的 t2=(),元组可以包含一个元素t3=123,元组外侧可以使用括号,也可以不使用。

元组有3个特点:1、元组中元素可以是不同类型,t3=123,4,56,("hello","中国")

2、元组中个元素存在先后关系,可以通过索引方式来访问元组中的元素。t3[0]

3、元组定义后不能更改也不能删除。

元组的概念接上:与字符串类型类似,可以通过索引区间来访问元组中部分元素,t[1:]。与字符串一样,元组之间可以使用+或者*进行运算。

tuple类型可以使代码更安全,如果想要代码更灵活,那我们使用列表类型。

IV:列表类型list,

   1)列表的操作:列表可以像字符串一样使用+来连接两个序列,使用*来对序列进行整数次重复,索引序列中的元素、区序列的一个字序列(切片),序列中元素个数len(),对序列进行循环列举 for var in seq:,成员检查expre in seq

2)列表的操作:list.append(x)将元素x追加到列表最后、list.sort()将列表元素排序、list.reverse()将列表元素反转、list.index(x)返回第一次出现元素x的所索引值,list.insert(i,x)在位置i处插入新元素x,list.count(x)返回元素x在列表中的数量,list.remove(x)删除列表中第一次出现的x,list.pop(i)取出列表中位置i的元素并删除它。对于字符串函数我们可以使用split()将其拆分成一个列表。

字符串、元组、列表之间怎样相互转换:

s=“hello”

list(s)

tuple(s)

元组合列表转换成字符串用到join()

"".join(list(s))

"".join(tuple(s))

2、math库和random库和实例

   math库与random库-PPT

3、课后练习

  1)python提供两种字符串格式化方法,一种是类似c语言的格式化方法%,另一种是format()方法。python推荐使用format()方法。

week4 python程序之控制结构

1、程序基本结构:草图,流程图,顺序结构,分支结构,循环结构

2、分支结构分为单分支机构和双分支结构

1)eval函数:用来执行一个字符串表达式,并返回表达式的值

二次方程求解案例,用到了eval()。如:a,b,c=eval(input("a,b,c")),否则不能连着输入a,b,c ,得一行一行的输入。input输入的数字是字符串的类型,eval(input())输入的是数字类型

3、多分支结构

1)if ...else...中嵌套if else ,但处理复杂问题的时候,这种就太麻烦了,所以python中有多分支机构 if elif else 多分支语句来解决分支结构嵌套问题

2)二次方程求解案例:考虑a=0即分母为零的情况,在分母不为零的情况下,考虑 sqrt()=0单根的情况,sqrt()>0双根的情况和sqrt()<0没有根的情况

4、异常处理

 1)二次方程求解实例我们用分支结构来判断了求根公式是否为零的几种情况,但是如果程序设计的时候每一句话都要用分支结构来判断其各种情况,那重要的算法语句将不会清晰易懂,所以我们没必要用分支结构来对一些简单的经常会出现的问题就行分情况解决,我们可以使用异常处理。

2)try:

..............

..............

except ZeroDivisionError:

......

except SyntaxError:

......

except:

......

else:

.........

.........

finally:

try 去捕捉代码异常,例如sqrt()异常,如果捕捉到对应的异常的话,就执行except捕捉到对应异常的语句,try语句后面可以跟若干个except语句,except也可以不用写具体的异常,最后执行finally语句。如果try没有捕捉到具体的语句,则执行 else后面的语句和finally语句。

3)二次方程求解案例:except后面捕捉的是一个NameError 错误,但是我故意测试一个值的错误,看看程序是会抛出异常呢,还是会崩溃.

测试结果为,except只会抛出 后面对应的错误,例如except NameError 只会抛出名字错误的语句,如果是语法错误的语句,则不会抛出,程序还是会奔溃。

5、三者最大实例分析

1)三者最大实例有4种解决办法,第一种通盘比较,即将每一个值与其它的值进行比较,以确定最大值。if x1>x2 and a1> x3 elif x2>x1 and x2>x3 else x3. 第二种决策树 先判断x1>x2 ,如果成立再判断x1>x3,否则判断x2>x3. 这两种方法对于处理3个数字中最大的数还比较好解决,但是解决多余3个数字的时候就会有问题,算法变得十分复杂。第三种是 顺序处理方法,建一个max变量,先将一个变量赋值给max,第四种是 python 内置函数 max函数。

6、基本循环结构:

  1)for 循环便利列表和字符串,遍历的时候有累加器,把每一次的值累加起来,再求平均值。for循环在执行过程中,直接在序列上进行遍历,而非在内存中生成一个新的序列拷贝进行

2)for i in range(5):

  ......

   else:

     ......

for else 和try else 的情况很相似。 for 循环遍历,如果for 条件不成立了再执行else

7、通用循环构造方法

  听不懂老师讲的,暂时先过吧

8、死循环/嵌套循环

  1)死循环并不是没有好处,while True 和while 1也有其价值

2)听不懂,暂时先过吧

9、布尔表达式

1)布尔操作符:and or not,优先级是not and or

week5:python编程之代码复用

1、函数定义和作用、调用与返回

1) 函数返回单个值或者多个值,通过return返回值来和调用程序进行信息传递,也可以通过函数参数来和调用程序进行信息传递(值传递和引用传递,例如数字类型的传递是值传递,列表类型的传递是引用传递)

2)函数是代码的一种抽象

2、函数与递归

函数递归远离合练习

3、函数实例

利用turtle库和函数递归来画一颗数和多颗树组成的森林。

以后用到了再画

4、课后练习

绘制一个显示当前时间的七段数码馆

week6 python编程之组合类型(文件和字典)

1、文件的基础

1)文件和编码的概念:

存储在外部介质上的数据或信息的集合.编码指的是信息从一种形式转换成另一种形式的过程。

2)文件的基本处理

打开文件:建立磁盘上的文件与程序中的对象相关联,通过相关的文件对象获得。file=open(<name><mode>),mode有 r、 w、 a。 rb 、wb 、ab。r+。

b是二进制,如图片、视频、音乐文件等等,都是用二进制存放的。

文件操作:读取、写入、定位、其他:追加、计算等读取是指将文件数据读到计算机内存。写入是指从计算机内存向文件写入数据。定位指定位文件读写位置。

  读取:read()整个文件内容的一个字符串 、readline()每次读取一行、readlines()整个文件内容的列表,每项是以换行符结尾的一行字符串。

写入:write()把含有文本数据或者二进制数据块的字符串写入文件中、writelines()针对列表操作,接受一个字符串列表作为参数,将他们写入文件,并且行结束符不会自动被加入。

文件遍历:最常见的文件处理方法。通用文件遍历代码框架:

关闭文件:关闭文件即切断文件与程序的联系。写入磁盘并释放文件缓冲区

3)文件实例一

将data.txt中的数值数据,使用turtle库来绘制动态图形路径。

list(map(float,line.split(',')))函数的意思

4)文件实例二

将两个文件合并成一个文件

动手操作一下这两个案例和前面的一个案例

5)字典的概念:

6)字典的操作:

为字典增加一项

访问字典中的值

删除字典中的值

字典的遍历

for key in students:

print ("key"+str(students[ke]))

遍历字典的键key .for key in students.keys():

遍历字典的值value。for key in students.values():

遍历字典的项。for item in students.items():

遍历字典的key-value:for item,value in adict.items():

是否一个键在字典中,in或者not in

字典的标准操作符:

-,<,>,<=,>=,==,!=,and,or,not

python还提供了丰富的字典方法,其中:

keys():返回一个包含字典所有key的列表

values():返回一个包含字典所有value的列表

Items():返回一个包含所有键值的列表

clear():删除字典中的所有项目

get(key):返回字典中key对应的值

pop(key):删除并返回字典中key对应的值

update(字典):将字典中的键值添加到字典中

7)字典实例一

搜索文件中单词频率统计,并绘制成柱形图

8)字典实例二

用字典结构遍历存储两个通讯录文件

9)课后练习

词频统计