一、第六章 异常处理
二、第六章 函数
三、数据结构:列表、元组、字典、集合、字符串
1、列表切片:列表对象[start : end : step]
2、列表推导式
列表推导式利用已有列表快速生成满足特定需求的列表。列表推导式在逻辑上相当于一个循环,只是形式更加简洁.
语法形式:[表达式 for 表达式中的变量 in 已有序列 if 过滤条件]
In [1]:
list_1 = list(range(1,10))
list_1
Out[1]:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
In [2]:
list_1[5:]
Out[2]:
[6, 7, 8, 9]
In [3]:
list_1[:5]
Out[3]:
[1, 2, 3, 4, 5]
In [4]:
list_1[1::2]
Out[4]:
[2, 4, 6, 8]
In [5]:
ls = list(range(10))
for i in range(0,6,3):
print(ls[i::i+1])
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[3, 7]
In [6]:
ls = list(range(10))
ls
Out[6]:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [7]:
for i in range(0,6,3):
print(i)
0
3
In [8]:
#已知有两个列表 a_lis=[4,10,12,4,9,6,3],b_list=[12,8,5,6,7,10],编写程序实现以下功能
#(1)将两个列表进行合并,合并时删除重复元素,合并结果存放在c_list中:
a_list=[4,10,12,4,9,6,3]
b_list=[12,8,5,6,7,6,10]
d_list=a_list+b_list
#d_list=set(d_list)
c_list=[]
for i in d_list:
if i not in c_list:
c_list.append(i)
print(c_list)
print(d_list)
#(2)对c_list按照元素的大小进行降序排列,并打印出排非序结果。
c_list.sort(reverse = True)
print(c_list)
[4, 10, 12, 9, 6, 3, 8, 5, 7]
[4, 10, 12, 4, 9, 6, 3, 12, 8, 5, 6, 7, 6, 10]
[12, 10, 9, 8, 7, 6, 5, 4, 3]
In [9]:
#P94_4.4 请编程使用循环和列表推导式两种方法求解百钱买百鸡问题。
#假设大鸡5元一只,中鸡3元一只,小鸡1元三只,现有100元钱想买100只鸡,有多少种买法?
for x in range(100):
for y in range(100):
for z in range(100):
if (x+y+z==100 and 5*x+3*y+z/3==100):
print('大鸡x=',x)
print('中鸡z=',z)
print('小鸡y=',y)
print('\n')
大鸡x= 0
中鸡z= 75
小鸡y= 25
大鸡x= 4
中鸡z= 78
小鸡y= 18
大鸡x= 8
中鸡z= 81
小鸡y= 11
大鸡x= 12
中鸡z= 84
小鸡y= 4
In [10]:
#语法形式:[表达式 for 表达式中的变量 in 已有序列 if 过滤条件]
[[x,y,z]for x in range(100)for y in range(100)for z in range(100) if x+y+z==100 and 5*x+3*y+z/3==100]
Out[10]:
[[0, 25, 75], [4, 18, 78], [8, 11, 81], [12, 4, 84]]
四、Numpy科学计算库
1、数组对象ndarray创建的常用方法:
(1)等间隔数组:np.arange()
(2)等差数组:np.linspace()
(3)等比数组:np.logspace()
(4)0数组:np.zeros()
(5)1数组:np.ones()
(6)空数组:np.empty()
(7)满数组:np.ful1()所有元素相同
(8)单位矩阵:np.eye(n,m),对角线元素为1,其余为0
(9)单位方阵:np.identity (n)
2、数组的属性
(1)形状:shape
(2)大小:size
(3)维度:ndim
(4)数据类型:dtype
3、数组ndarray对象的切片与列表的勺切片相似,参考课本P221和P60(数组与列表的区别)
In [11]:
import numpy as np
In [12]:
#创建:
arr_1 = np.array([1,4,5,6,7])
arr_1
Out[12]:
array([1, 4, 5, 6, 7])
In [13]:
arr_1[3]
Out[13]:
6
In [14]:
arr_2 = np.arange(10)
arr_2
Out[14]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [15]:
arr_2.shape
Out[15]:
(10,)
In [16]:
arr_2.size
Out[16]:
10
In [17]:
arr_2.ndim
Out[17]:
1
In [18]:
arr_2.dtype
Out[18]:
dtype('int32')
In [19]:
arr_3 = np.zeros([4,5],dtype = np.int32)
arr_3
Out[19]:
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
In [20]:
arr_3.shape
Out[20]:
(4, 5)
In [21]:
arr_3.size
Out[21]:
20
In [22]:
arr_3.dtype
Out[22]:
dtype('int32')
In [23]:
arr_4 = np.array([14,45,8,30])
arr_5 = np.zeros((arr_4.size-1)*3-2,dtype = np.int32)
arr_5[::2] = arr_4
arr_5
Out[23]:
array([14, 0, 45, 0, 8, 0, 30])
In [24]:
arr_4.dtype
Out[24]:
dtype('int32')
In [25]:
np.zeros((arr_4.size-1)*3-2)
Out[25]:
array([0., 0., 0., 0., 0., 0., 0.])
五、面向对象编程
1、类中通常包含一个特殊方法:__init__。它在创建和初始化一个新对象时被系统自动调用,初始化方法用于完成对象的初始化工作,如成员变量赋值等。
2、类中定义的每个方法都有一个名为self 的参数,该参数必须是方法的第一个参数,self表示当前对象,即指向调用方法的对象。
In [26]:
#P168 例9.1定义一个矩形类,包含两个数据成员(属性参数):宽度和高度;该类提供两种方法(功能函数):求面积和周长
class Rectangle: #定义一个 Rectangle类
def __init__(self,width,height): #定义初始化方法,指定宽度和高度
self.width = width #定义宽度属性
self.height = height #定义高度属性
def get_area(self): #定义方法获取矩形的面积
return self.width * self.height
def get_perimeter (self): #定义方法获取矩形的周长
return 2 * (self.width +self.height)
rect_1 = Rectangle(3,5) #创建矩形类的对象
print("矩形的宽度为:",rect_1.width)
print("矩形的高度为:",rect_1.height)
print("矩形的面积为:",rect_1.get_area())
print("矩形的周长为:",rect_1.get_perimeter())
矩形的宽度为: 3
矩形的高度为: 5
矩形的面积为: 15
矩形的周长为: 16
In [27]:
#如果计算圆
import numpy as np
np.pi
import math
math.pi
Out[27]:
3.141592653589793
六、文件操作
1、写(w)是指从头开始写,覆盖原有内容;附加也叫追加(a+)是从文件末尾开始写,保留原有内容。
2、“x+”:写多少覆盖多少,未覆盖部分保留;“w+”:覆盖所有内容,最终为当前写的内容。
In [28]:
with open('../R&Q_pic/test.txt','w+',encoding = 'utf-8') as fw:
for i in range(10):
fw.write('学号+姓名')
with open('../R&Q_pic/test.txt',encoding = 'utf-8') as fr:
for line in fr:
print(line)
学号+姓名学号+姓名学号+姓名学号+姓名学号+姓名学号+姓名学号+姓名学号+姓名学号+姓名学号+姓名
In [32]:
with open('../R&Q_pic/test.txt','r+',encoding = 'utf-8') as fw:
for i in range(50):
fw.write('1103')
with open('../R&Q_pic/test.txt',encoding = 'utf-8') as fr:
for line in fr:
print(line)
1103110311031103110311031103110311031103110311031103110311031103110311031103110311031103110311031103110311031103110311031103110311031103110311031103110311031103110311031103110311031103110311031103110303
1103
1103
1103
1103
1103
1103
1103
1103
1103
1103
1103
1103
1103
1103
1103
continue 与 break 的区别:continue终止小循环,break终止大循环(结束循环)