all

Python基础

1、格式化字符串:f”······“

	first_name = Bili
​	last_name = Halidon
​	full_name = f"{first_name}{last_name}"
​	print(f"Hello, {full_name.title()}")

2、列表 a = [‘a’, 1, ‘abc’]

(1)添加元素:

​ append()方法:向列表中添加元素(从后面插入)。a.append(6)

​ extend()方法:添加多个元素(尾插)。a.exten([8, 9])

​ insert(x, y):在指定位置插入。 将7插到6和8之间:insert(7, 7)

(2)交换a[1]、a[3]:a[1],a[3] = a[3],a[1]

(3)删除元素:

​ remove():删除指定元素。a.remove(‘abc’)

​ pop( ):探出指定索引的元素。b = a.pop(1)

​ del语句:del a[0]。

(4)改变步长:切片:

​ list[0: 9: 2],其中2为步长

(5)"+":拼接列表

​ “*":重复操作符,lists * 3就是把lists复制三份拼到一个列表里。

(6)复制列表 a = b[:]

​ a = b是引用同一个列表 实验:

a = ['a', 1, "b"]
b = a
c = a[:]
a.append('c')
print(f"a = {a}")
print(f"b = {b}")
print(f"c = {c}")

结果:

a = ['a', 1, 'b', 'c']
b = ['a', 1, 'b', 'c']
c = ['a', 1, 'b']

3、元组a = (1, 2, 3)

解包,取得元组所有值:

li = (1, 2, 3, 4)

a,b,c,d = li

a,*b = li

4、字典: dic = {‘a’:1,‘b’:2}

(1)添加键值对:

dic['c'] = 3

(2)删除键值对:

del dic['c']

(3)遍历键值对:

for key, value in dic():
​					print(f"{key}:{value}")

(4)遍历所有键:

for i in dic.keys():
​					print(i)

(5)遍历所有值:

for i in dic.values():

5、函数:

(1)防止函数修改字符串:

使用切片副本。

function_name(list_name[ : ])
(2)传递任意数量实参:
def make_pizza(size, *toppings):······
(3)使用任意数量的关键字实参(键值对):
def build_profile(first, last, **user_info):······
(4)map()函数:放入另一个函数和可迭代对象,其中每个元素都会执行该函数
list = [1,2,3]

def plus(x):

​	return x+5

mp = map(plus, list)
(5)函数嵌套中,使用nonlocal关键字声明该变量不是一个局部变量:nonlocal x
def funX():

​	x = 5

​	def funY():

​		nonlocal x

​		x = x+1

​	return funY()
(6)装饰器:@语法糖
def log(func):

​	def wapper():

​		print('是史')

​		func()

​	return wapper



@log

def eat( ):

​	print('开吃')

#相当于log(eat()),使用时注意参数数量一致。

@buffer

@log

def eat():

​	pass

#相当于buffer(log(eat()))

(7)filter(a, b)函数 :过滤器。

参数a为要过滤出的数据,b为可迭代对象,在b中过滤出a。

temp = filter(None, [1, 0, True])  # 第一个参数为None时将第二个参数(即该数组中)为True的值筛选出来。

结果:[1, True]
(8)匿名函数:func = lambda: 形参:返回值(表达式)

例:

func = lambda a+b : sam

func = a,b,c=10 : a,b,c # 默认参数要写在非默认后面
(9)常见函数

input():注意输入的值为字符串str类型,若要使用数值需要int()强制转换

a = input("输入a的值")

python生成随机数

import random

random.random():返回0到1之间的随机浮点数

random.uniform(a,b):返回a到b之间的随机浮点数

random.randint(a,b):返回一个随机的整数

random.randrange([start, stop, 步长):返回指定递增基数集合中的一个随机数

random.choice(sequence)从 sequence (列表、元组或字符串)中返回一个随机数(若传入的值 sequence 为空,则会引发 IndexError 异常)

random.shuffle(list_name)将列表中顺序打乱

random.sample(squence, K)从指定序列中随机获取 K 个元素作为一个片段返回

格式化字符串:

text = "使用f"

f"{text}:可以以此格式化"

结果:使用f : 可以以此格式化

字符串转化为列表:splite( )方法

citys = '成都、绵阳、自贡'
city_list = citys.split('、') #以逗号、为分割依据
结果:city_list = ['成都'、'绵阳'、'自贡']

6、类:

(1)定义
class dog:
	def __init__(self, name, age):
		self.name = name
		self.age = age

​	def sit(self):
​		print(f"{self.name} is sitting now")

实例:my_dog = dog(‘sam’, 6) 访问属性:my_dog.name

(2)继承:
(一)子类中定义与父类同名的方法或属性会覆盖父类,包括构造方法_ _ init _ _( ),以构造方法为例,为继承父类init的同时增添或修改,需要:
class child(parent):

​	def _ _ init _ _(self):

​		def parent._ _ init _ _(self)

或使用super()函数

class ElectrnicCar(Car):
	def __int__(self, make, model):
		super().__init__(make,model)
(二)多重继承:(慎用)
class child(parent1, parent2):

​	pass
(三)与类有关内置函数:

(1)issubclass(class, classinfo):若第一个参数class是第二个参数classinfo的子类,则返回True;classinfo可以是类对象组成的元组,只要class是其中任意一个的子类即为True

(2)isinstance(object, classinfo):若object是classinfo或其子类的一个实例,则为True

(3)hasattr(object, name):测试对象object里是否有名为name的属性

(4)getattr(object, name[,default]):返回object的指定属性name的值,若不存在则返回default的内容

(5)setattr(object, name, value):设置对象中指定属性的值

(6)delattr(object, name):删除对象中指定属性的值

(7)property( ):通过属性设置属性

(四)魔法方法:

​ _ _ init _ _():构造方法,通常用来自定义对象的初始化操作。

7、迭代器:

iter( )方法:对一个可迭代对象调用该方法可获得其迭代器

next()方法:迭代器返回下一个值

8、三目运算:为真结果 if 条件 else 为假结果

print("a比b小") if a<b else print("a大于等于b")

comp = lambda a,b : "a比b小"  if a<b else print("a大于等于b")
print(comp(a,b))#结合匿名函数

9、异常:

(一)创建一个Exception对象,设置异常提示信息,通过raise抛出。Exception对象包含所有类型异常。
try:

​	可能异常的代码

except (异常类型名1, 异常类型名2)as 变量名:

​	出现异常时执行的代码
try:

​	可能发生的

except 异常类型:

​	捕获到异常时执行的代码

else:

​	无异常时执行的代码

finally:

​	无论如何都会执行的代码

示例:

def fun():
    a = input("psw:")
    if len(a) == 6:
        return "ojbk"
    raise Exception("fuck")#密码长度为6位则没毛病

try:
    print(fun())
except Exception as e:
    print(e)
(二)常见异常:

​ (1)AssertionError:断言语句失败;(2)AttributeError:尝试访问未知的对象属性;(3)IndexError:索引超出序列范围(4)KeyError:字典中查找一个不存在的关键字;(5)NameError:尝试访问一个不存在的变量;(6)OSError:操作系统异常;(7)SyntaxError:Python语法错误;(8)TypeError:不同类型的无效操作;(9)ZeroDivisionError:除数为0。

10、文件操作:

(一)打开读取整个文件:open(‘01.txt’, ‘w’)写模式,‘r’读模式,‘r+’读写模式
with open('test.txt') as file01:
	content = file01.read
print(content)
(二)with语句:可抽象出文件操作中的try、except等,会自动关闭打开的文件:
try:

​	with open('data.txt', 'r') as f:

​		for each_line in f:

​			print(each_line)#读取整个文件

except OSError as reason:

​	print(reason)
(三)readline()方法:从文件中读取一整行字符串。还可将整个文件置于一个字符串中读取:list( f )
写入:

with open('data.txt', 'w') as f:

​	f.write("待写入的数据") #“w”模式下写入会覆盖之前的数据

with open('data.txt', 'a') as f:

​	f.write("待写入的数据") #“a”模式下才是内容上追加。
(四)python操作excel

使用库:‘xlwings’, xlwings 可以读取 .xls.xlsx 文件,xlwings直接对接apps

4.1.xlwings读取excel文件:

app = xw.App(visible=True, add_book=False) # 程序可见,只打开不新建工作薄
app.display_alerts = False # 警告关闭
app.screen_updating = False # 屏幕更新关闭

wb = app.books.open(xlsx_path)
wb.save() # 保存文件
wb.close() # 关闭文件
app.quit() # 关闭程序

4.2.xlwings获取工作表

sheet = xw.sheets.active # 在活动工作簿(当前正在操作的工作簿)
sheet = wb.sheets.active # 在特定工作簿

4.3.xlwings创建文件

wb = app.books.add()
# 无论是新建还是打开都需要保存工作簿、关闭工作簿、关闭程序,即:
wb.save(path + r'\new_practice.xlsx') 
wb.close() 
app.quit()

4.4.xlwings获取单元格的值

# 获取单个单元格的值
A1 = sheet.range('A1').value
print(A1)

# 获取横向或纵向多个单元格的值,返回列表
A1_A3 = sheet.range('A1:A3').value
print(A1_A3)

# 获取给定范围内多个单元格的值,返回嵌套列表,按行为列表
A1_C4 = sheet.range('A1:C4').value
print(A1_C4)

4.5.xlwings写入数据

# 写入 1 个单元格
sheet.range('A2').value = '大明'

# 横向写入A1:C1,只能靠存储输入值的列表长度来决定输入到哪一个单元格结束
sheet.range('A1').value = [1,2,3]
# 纵向写入A1:A3
sheet.range('A1').options(transpose=True).value = [1,2,3]
# 写入范围内多个单元格
sheet.range('A1').options(expand='table').value = [[1,2,3], [4,5,6]]

4.6.xlwings调整样式

# 获取颜色
print(sheet.range('C1').color)

# 设置颜色
sheet.range('C1').color = (255, 0, 120)

# 清除颜色
sheet.range('C1').color = None

4.7.xlwings插入图片

sheet.pictures.add(r'C:\\xxx.jpg')
# 也可以给定位置插入
sheet.pictures.add(r'C:\\xxx.jpg', left=sheet.range('A2').left, top=sheet.range('A2').top, width=100, height=100)