【W3Cschool之强化Python能力】

Python

  • 一、概念问题
    • 1、面向对象与面向过程的区别
  • 三、细节问题
    • 1、输出内容换行符
    • 2、变量名的命名要求
    • 3、算术运算符
    • 4、浮点数的产生
    • 5、转义字符
    • 6、print函数
    • 7、斐波那契数列
    • 8、end关键字
    • 9、isinstance和type的区别:
    • 10、运算符
      • 1)位运算符
      • 2)逻辑运算符
    • 11、break与continue在循环句子中的区别
    • 12、数据结构
      • 1)列表(list)
      • 2)元组(tuple)
      • 3)集合(set)
      • 4)字典(dictionary)
      • 5)数字(number)
      • 6)字符串(string)
  • 四、新内容知识
    • 1、数据类型和数据结构
      • 1)对象
      • 2)标准数据类型
      • 3)序列(一种数据结构)
    • 2、迭代器与生成器
      • 1)迭代器
        • A、iter()
        • B、next()
      • 2)生成器
    • 2、读和写文件
      • 1)读
      • 2)写
  • 参考资料

这一块主要用于记录自己利用这段空闲时间,进一步提高自己Python编程水平,对一些模糊问题进行重新学习及强化。

一、概念问题

1、面向对象与面向过程的区别

面向对象(Object Oriented,简称OO:如Python、C++等编程语言): 把需要解决的问题从分析对象的角度进行分析编程,分析该对象具有什么性质,有什么属性,有什么方法。在解决该问题时,直接调用该对象的属性、方法即可。如分析人具有跳、跑、走、吃、喝等属性,在使用的时候直接调用人.跑()即可。

面向过程(Procedure Oriented,简称PO:如C语言 ):把需要解决的问题从分析过程的角度进行分析编程,分析该过程是什么流程,要按照什么顺序执行,等按照这些顺序执行完,该问题也就得到了解决。

从其他地方看到了一个例子,特别形象、易于理解,这里拿来供大家参考学习:
问题: 洗衣机里面放有脏衣服,怎么洗干净?

面向过程的解决方法:
1、执行加洗衣粉方法;
2、执行加水方法;
3、执行洗衣服方法;
4、执行清洗方法;
5、 执行烘干方法;

以上就是将解决这个问题的过程拆成一个个方法(是没有对象去调用的),通过一个个方法的执行来解决问题。

面向对象的解决方法:
1、先写出两个对象:“洗衣机”对象和“人”对象;
2、针对对象“洗衣机”加入一些属性和方法:“洗衣服方法”、“清洗方法”、“烘干方法”;
3、针对对象“人”加入属性和方法:“加洗衣粉方法”、“加水方法”;
4、然后执行
1)人.加洗衣粉
2)人.加水
3)洗衣机.洗衣服
4)洗衣机.清洗
5)洗衣机.烘干

解决同一个问题 ,面向对象编程就是先抽象出对象,然后用对象执行方法的方式解决问题。

三、细节问题

1、输出内容换行符

print('Hello\nWorld')
#输出结果为:
Hello
World

2、变量名的命名要求

变量名称允许使用的字符是字母、数字、下划线,并且不能以数字开头。

3、算术运算符

(1)取余:%
(2)整除://
(3)幂数:**

4、浮点数的产生

Python中使用浮点数来表示不是整数的数字。
浮点数的产生可以通过带有小数点的数字直接创建,也可以使用整数除法等操作产生。

5、转义字符

需要转义的话,需要在转义字符前面加上反斜杠\即可。
注意:
(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

6、print函数

print函数默认情况下,输出是要换行输出的,如果要实现不换行输出,需要在变量末尾加上end=“ ”。

7、斐波那契数列

又称为黄金分割数列,即: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*).

8、end关键字

关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符。

9、isinstance和type的区别:

type():不会认为子类是一种父类类型。
isinstance():会认为子类是一种父类类型。

10、运算符

1)位运算符

(1)^(按位异或运算符):不同为1,相同为0.
(2)<<(左移运算符):二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。如a << 2 输出结果 240 ,二进制解释: 1111 0000
(3)>>(右移运算符):把“>>”左边的数的二进位数全部右移若干位,“>>”右边的数指定移动的位数。如60 >> 2 输出结果 15 ,二进制解释: 0000 1111

2)逻辑运算符

(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。

11、break与continue在循环句子中的区别

break:直接跳出循环体。
continue:跳出当前循环,执行下一轮循环。

12、数据结构

1)列表(list)

列表:是写在方括号之间、用逗号分隔开的元素列表,列表中元素的类型可以不相同。【列表中的元素可以修改】

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() 方法可以把一个元素从堆栈顶释放出来。
队列:先进先出。
列表的方法使得列表也可以当做队列使用,在队列的第一个位置加入的元素可以第一个取出来。
注意:拿列表作队列效率不高。在列表的最后添加或者弹出元素速度快,然而在列表里插入或者从头部弹出速度却不快,这是因为列表中的所有的元素都需要进行移动。

2)元组(tuple)

元组使用小括号(),列表使用方括号[]。

3)集合(set)

是一个无序不重复元素的集。创建空集合必须使用功能set(),不能使用{},{}是用来创建空字典的。集合的基本功能包括关系测试和消除重复元素。

4)字典(dictionary)

是一个无序的键值对(key-value)集合。其中关键字(key)必须使用不可变类型,且不能重复。创建空字典使用{}。

在字典中遍历时,关键字和对应的值可以使用items()方法同时解读出来;
在序列中遍历时,索引位置和对应值可以使用enumerate()函数同时得到;
同时遍历两个或更多的序列时,可以使用zip()组合;
要反向遍历一个序列时,首先调用reversed()函数。

5)数字(number)

主要包含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):将序列的所有元素随机排序

6)字符串(string)

字符串格式符%s

四、新内容知识

1、数据类型和数据结构

1)对象

对象:Python中以一切皆对象,每一个对象都有一个唯一的标识符(id())、类型(type())以及值。
对象根据其能否修改,可以分为可变对象和不可变对象。
不可变对象:数字、字符串、元组。
可变对象:字典、列表、字节数组。

2)标准数据类型

在Python中,变量就是变量,它没有类型,我们所说的“类型”是指,变量所指的内存中对象的类型。

Python中有6个标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)。其中
不可变数据:Number(数字)、String(字符串)、Tuple(元组);
可变数据:List(列表)、Set(集合)、Dictionary(字典)。

3)序列(一种数据结构)

在编程语言中,将以某种方式(比如通过编号)组合起来的数据元素集合称为数据结构。在Python中,最基本的数据结构为序列(sequence,简写为seq)。

序列:是一块可以存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在的位置的编号(也就是索引)访问它们。

在Python中,序列类型包括字符串、列表、元组、集合和字典。

与序列相关的内置函数
sorted():对元素进行排序。
reversed():反向序列中的元素。
enumerate():将序列组合为一个索引序列,多用在for循环中。

2、迭代器与生成器

1)迭代器

迭代器:是访问集合与元素的一种形式,可以记住遍历的位置的对象。有两个基本的方法:

A、iter()

list=[1,2,3,4]
it=iter(list)	#创建迭代器
for i in it:
	print(x)

B、next()

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()

2)生成器

生成器(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()

2、读和写文件

f=open(filename,mode)
—filename:文件名字。
—mode:‘r’:只读;‘w’:只写;‘a’:追加文件内容;‘r+’:读写。默认是’r’。

1)读

f.read(size):读取一定数目的数据,然后作为字符串或者字节对象,返回。
f.readline():从文件中读取单独的一行。
f.readlines():返回该文件中包含的所有行。

2)写

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、 面向对象编程与面向过程编程举例

你可能感兴趣的:(Python,python)