这一块主要用于记录自己利用这段空闲时间,进一步提高自己Python编程水平,对一些模糊问题进行重新学习及强化。
面向对象(Object Oriented,简称OO:如Python、C++等编程语言): 把需要解决的问题从分析对象的角度进行分析编程,分析该对象具有什么性质,有什么属性,有什么方法。在解决该问题时,直接调用该对象的属性、方法即可。如分析人具有跳、跑、走、吃、喝等属性,在使用的时候直接调用人.跑()即可。
面向过程(Procedure Oriented,简称PO:如C语言 ):把需要解决的问题从分析过程的角度进行分析编程,分析该过程是什么流程,要按照什么顺序执行,等按照这些顺序执行完,该问题也就得到了解决。
从其他地方看到了一个例子,特别形象、易于理解,这里拿来供大家参考学习:
问题: 洗衣机里面放有脏衣服,怎么洗干净?
面向过程的解决方法:
1、执行加洗衣粉方法;
2、执行加水方法;
3、执行洗衣服方法;
4、执行清洗方法;
5、 执行烘干方法;
以上就是将解决这个问题的过程拆成一个个方法(是没有对象去调用的),通过一个个方法的执行来解决问题。
面向对象的解决方法:
1、先写出两个对象:“洗衣机”对象和“人”对象;
2、针对对象“洗衣机”加入一些属性和方法:“洗衣服方法”、“清洗方法”、“烘干方法”;
3、针对对象“人”加入属性和方法:“加洗衣粉方法”、“加水方法”;
4、然后执行
1)人.加洗衣粉
2)人.加水
3)洗衣机.洗衣服
4)洗衣机.清洗
5)洗衣机.烘干
解决同一个问题 ,面向对象编程就是先抽象出对象,然后用对象执行方法的方式解决问题。
print('Hello\nWorld')
#输出结果为:
Hello
World
变量名称允许使用的字符是字母、数字、下划线,并且不能以数字开头。
(1)取余:%
(2)整除://
(3)幂数:**
Python中使用浮点数来表示不是整数的数字。
浮点数的产生可以通过带有小数点的数字直接创建,也可以使用整数除法等操作产生。
需要转义的话,需要在转义字符前面加上反斜杠\
即可。
注意:
(1)换行符n
和反斜杠\
前面必须加上转义字符,分别变为\n
和\\
。
(2)用三行引号创建字符串时,使用换行符时,不需要进行转义,Enter键会自动进行转义。
(3)在字符串前面添加一个r
,表示的是原始字符串,不会发生转义。如:
print(r'hello\nworld') #输出为:hello\nworld
print(r'this is a word \n') #输出为:this is a word \\n
print函数默认情况下,输出是要换行输出的,如果要实现不换行输出,需要在变量末尾加上end=“ ”。
又称为黄金分割数列,即:1,1,2,3,5,8,13,21,34,,,,,,
使用递推方法可以表示为:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2) (n ≥ 2,n ∈ N*).
关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符。
type():不会认为子类是一种父类类型。
isinstance():会认为子类是一种父类类型。
(1)^(按位异或运算符):不同为1,相同为0.
(2)<<(左移运算符):二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。如a << 2 输出结果 240 ,二进制解释: 1111 0000
(3)>>(右移运算符):把“>>”左边的数的二进位数全部右移若干位,“>>”右边的数指定移动的位数。如60 >> 2 输出结果 15 ,二进制解释: 0000 1111
(1)and(布尔“与”):x and y—如果x为False,x and y返回False,否则它返回y的计算值。如(10 and 20)返回20.
(2)or(布尔“或”):x or y—如果x是True,它返回x的值,否则它返回y的计算值。如(10 or 20)返回10.
(3)not(布尔“非”):not x—如果x为True,返回False。如果x为False,它返回True。如(not(10 and 20))返回False。
break:直接跳出循环体。
continue:跳出当前循环,执行下一轮循环。
列表:是写在方括号之间、用逗号分隔开的元素列表,列表中元素的类型可以不相同。【列表中的元素可以修改】
list1 = ['Google', 'W3Cschool', 1997, 2000]
列表的方法有:list.append(x)、list.extend(L)、list.insert(i,x)、list.remove(x)、list.pop([i])、list.clear()、list.index(x)、list.count(x)、list.sort()、list.reverse()、list.copy()。
堆栈:一种特定的数据结构,最先进入的元素最后一个被释放(后进先出)。
列表的方法使得列表可以作为一个堆栈来使用,使用append() 方法可以把一个元素添加到堆栈顶,使用功能不指定索引的pop() 方法可以把一个元素从堆栈顶释放出来。
队列:先进先出。
列表的方法使得列表也可以当做队列使用,在队列的第一个位置加入的元素可以第一个取出来。
注意:拿列表作队列效率不高。在列表的最后添加或者弹出元素速度快,然而在列表里插入或者从头部弹出速度却不快,这是因为列表中的所有的元素都需要进行移动。
元组使用小括号(),列表使用方括号[]。
是一个无序不重复元素的集。创建空集合必须使用功能set(),不能使用{},{}是用来创建空字典的。集合的基本功能包括关系测试和消除重复元素。
是一个无序的键值对(key-value)集合。其中关键字(key)必须使用不可变类型,且不能重复。创建空字典使用{}。
在字典中遍历时,关键字和对应的值可以使用items()方法同时解读出来;
在序列中遍历时,索引位置和对应值可以使用enumerate()函数同时得到;
同时遍历两个或更多的序列时,可以使用zip()组合;
要反向遍历一个序列时,首先调用reversed()函数。
主要包含int(整型)、float(浮点型)、bool(布尔型)、complex(复数)。
A、数学函数
abs(x):返回数字的绝对值,如abs(-10) 返回 10
fabs(x):返回数字的绝对值,如math.fabs(-10) 返回10.0
ceil(x):返回数字的上入整数,如math.ceil(4.1) 返回 5
floor(x):返回数字的下舍整数,如math.floor(4.9)返回 4
pow(x, y):x**y 运算后的值。
sqrt(x):返回数字x的平方根。
modf(x):返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
round(x [,n]) :返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。
B、三角函数
atan2(y, x):返回给定的 X 及 Y 坐标值的反正切值。
hypot(x, y):返回欧几里德范数 sqrt(xx + yy)。
degrees(x):将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
radians(x): 将角度转换为弧度
C、随机数函数
choice(seq):从序列的元素中随机挑选一个元素
randrange ([start,] stop [,step]):从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1
random():随机生成下一个实数,它在[0,1)范围内。
uniform(x, y):随机生成下一个实数,它在[x,y]范围内。
seed([x]):改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
shuffle(lst):将序列的所有元素随机排序
字符串格式符%s
对象:Python中以一切皆对象,每一个对象都有一个唯一的标识符(id())、类型(type())以及值。
对象根据其值能否修改,可以分为可变对象和不可变对象。
不可变对象:数字、字符串、元组。
可变对象:字典、列表、字节数组。
在Python中,变量就是变量,它没有类型,我们所说的“类型”是指,变量所指的内存中对象的类型。
Python中有6个标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)。其中
不可变数据:Number(数字)、String(字符串)、Tuple(元组);
可变数据:List(列表)、Set(集合)、Dictionary(字典)。
在编程语言中,将以某种方式(比如通过编号)组合起来的数据元素集合称为数据结构。在Python中,最基本的数据结构为序列(sequence,简写为seq)。
序列:是一块可以存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在的位置的编号(也就是索引)访问它们。
在Python中,序列类型包括字符串、列表、元组、集合和字典。
与序列相关的内置函数
sorted():对元素进行排序。
reversed():反向序列中的元素。
enumerate():将序列组合为一个索引序列,多用在for循环中。
迭代器:是访问集合与元素的一种形式,可以记住遍历的位置的对象。有两个基本的方法:
list=[1,2,3,4]
it=iter(list) #创建迭代器
for i in it:
print(x)
list=[1,2,3,4]
it=iter(list) #创建迭代器
print(next(it)) # 1
print(next(it)) # 2
print(next(it)) # 3
print(next(it)) # 4
print(next(it)) # 报错,StopIteration.
可以改写为:
import sys
list=[1,2,3,4]
it=iter(list) #创建迭代器
while True:
try:
print(next(it))
except StopIteration:
sys.exit()
生成器(generator):使用yield的函数,是一个返回迭代器的函数,只能用于迭代操作。
在调用生成器运行的过程中,每次遇到yield时,函数会暂停并保存当前所有的运行信息,返回yield的值。并在下一次执行next()方法时从当前位置继续运行。
在pycharm中使用断点,可以查看代码的运行顺序及具体输出结果。
import sys
def fibonacci(n):
a,b,counter=0,1,0
while True:
if counter>n:
return
yield a
# print(f'a is {a}')
a,b=b,a+b
counter+=1
f=fibonacci(10) # f 是一个迭代器,由生成器返回生成。
while True:
try:
print(next(f),end=' ')
except StopIteration:
sys.exit()
f=open(filename,mode)
—filename:文件名字。
—mode:‘r’:只读;‘w’:只写;‘a’:追加文件内容;‘r+’:读写。默认是’r’。
f.read(size):读取一定数目的数据,然后作为字符串或者字节对象,返回。
f.readline():从文件中读取单独的一行。
f.readlines():返回该文件中包含的所有行。
f.write(string):将string写入到文件中,然后返回写入的字符数。
f.tell():返回文件对象当前所处发位置,它是从文件开头开始算起的字节数。
f.seek(offset,from_what):改变文件当前位置。
—from_what的值,一般默认为0,即文件开头。
如果是0,表示开头------seek(x, 0):从起始位置即文件首行首字符开始移动x个字符。
如果是1,表示当前位置------seek(x, 1):表示从当前位置往后移动x个字符。
如果是2,表示文件的结尾------seek(-x, 2):表示从文件的结尾往前移动x个字符。
f.close():关闭文件并释放系统资源。
1、 面向对象编程与面向过程编程举例