一、基础学习
1.1 输入功能1.2 占位符1.3 随机数选择1.4 for循环使用及乘法表1.5 文件的操作1.6 解析xml文件1.7 操作Excel
1.7.1 单元格样式(边框)1.7.2 crud操作1.7.3 打印操作 1.8 发送邮件 二、函数使用
2.1 基本函数2.2 匿名函数2.3 生成器2,4 模块导包2.5 文件注释2.6 json格式转换2.7 正则表达式 三、对象的了解
3.1 简单对象了解3.2 三大方法3.3 成员 属性3.4 成对方法3.5 迭代器 一、基础学习 1.1 输入功能
# name = input("请输入用户名:")# if name == "hehe":# print("sb")# else:# print("ss")
1.2 占位符# name = "喵喵"# age = 19# text = f"嫂子的名字叫{name},年龄是{age}"# print(text)
1.3 随机数选择# import random# data_list = ["iphone12","二手女友","10日游","避孕套","大保健"]# while data_list:# name = input("请输入自己的名字:")# value = random.choice(data_list)# print("恭喜{},抽中{}".format(name,value))# data_list.remove(value)
1.4 for循环使用及乘法表# for i in range(1, 10):# for j in range(1, i + 1):# text = "{}*{}".format(i, j)# print(text, end=" ")# print("")
1.5 文件的操作from xml.etree import ElementTree as ET# 创建标签root = ET.Element("home")# 创建节点son1 = ET.Element('son', {'name': '儿1'})son2 = ET.Element('son', {'name': '儿2'})# 添孙子grandson1 = ET.Element('grandson', {'name': '儿11'})grandson2 = ET.Element('grandson', {'name': '儿12'})son1.append(grandson1)son2.append(grandson2)# 把儿子添加到根节点中root.append(son1)root.append(son2)tree = ET.ElementTree(root)# short_empty_elements表示标签是否为短标签tree.write('file/oo.xml', encoding='utf-8', short_empty_elements=tree)
1.6 解析xml文件content = """
# 首先下载第三方文件 pip install openpyxlfrom openpyxl import load_workbookwb = load_workbook("files/p1.xlsx")# 循环所有sheet# for sheet in wb:# cell = sheet.cell(1, 1)# print(cell.value)# 获取第N行所有的单元格# for cell in sheet[1]:# print(cell.value)# 删除列表# del wb["用户列表"]# wb.save('files/p2.xlsx')# 获取某个单元格,修改值# cell = sheet.cell(1, 1)# cell.value = "开始"# wb.save("p2.xlsx")# 获取某个单元格,修改值# sheet['B3'] = "Alex"# wb.save("p2.xlsx")# 获取某个单元格,修改值# cell_list = sheet["B2": "C3"]# for row in cell_list:# for cell in row:# cell.value = "新的值"# wb.save("p2.xlsx")
1.7.1 单元格样式(边框)from openpyxl import load_workbookfrom openpyxl.styles import Alignment, Border, Side, Font, PatternFill, GradientFillwb = load_workbook("files/p1.xlsx")sheet = wb.worksheets[0]# 几行几列cell = sheet.cell(9, 2)# 居中设置cell.alignment = Alignment(horizontal='center', vertical='center', text_rotation=0, wrap_text=True)cell.border = Border( top=Side(style="thin", color="FFB6C1"), bottom=Side(style="dashed", color="FFB6C1"), left=Side(style="dashed", color="FFB6C1"), right=Side(style="dashed", color="9932CC"), diagonal=Side(style="thin", color="483D88"), diagonalUp=True, # 左下~右上 diagonalDown=True # 左上~右下)wb.save("p2.xlsx")
1.7.2 crud操作# 写入公式# sheet = wb.worksheets[3]# sheet["D1"] = "合计"# sheet["D2"] = "=B2*C2"# wb.save("p2.xlsx")# # 或者# sheet = wb.worksheets[3]# sheet["D3"] = "=SUN(B3,C3)"# wb.save("p2.xlsx")# 删除索引# idx 删除索引的位置# amount 要删除的个数sheet.delete_rows(idx=1, amount=2)sheet.delete_cols(idx=1, amount=3)wb.save("p2.xlsx")
1.7.3 打印操作from openpyxl import load_workbookfrom openpyxl.styles import Alignment, Border, Side, Font, PatternFill, GradientFillwb = load_workbook("files/p1.xlsx")sheet = wb.worksheets[0]# 打印操作# 打印区域sheet.print_area = "A1:D200"# 打印保留头部sheet.print_title_cols = "A:D"sheet.print_title_rows = "1:3"wb.save("files/p2xlsx")
1.8 发送邮件import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddr# 邮件的内容msg = MIMEText("约吗", 'html', 'utf-8')msg['From'] = formataddr(["haha", "yangyan@126.com"])msg['Subject'] = "180一晚"# 发送邮件server = smtplib.SMTP_SSL("smtp.126.com")server.login("yangyan@126.com", "LADFKNJHFD")server.sendmail("发送者邮箱", "接收者邮箱", msg.as_string())server.quit()
二、函数使用 2.1 基本函数# 形参的使用def fucn(*args, **kwargs): print(args,kwargs)fucn(11, 12 )fucn(11, 12, name="haha", age=19)fucn([11, 12, 33], {"k1": 1, "k2": 13})# 函数结果(11, 12) {}(11, 12) {'name': 'haha', 'age': 19}([11, 12, 33], {'k1': 1, 'k2': 13}) {}(11, 12, 33) {'k1': 1, 'k2': 13}
2.2 匿名函数基于lambda定义的函数格式为:lambda 参数:函数体
lambda x:函数体lambda x,y:函数体lambda *args, **kwargs:函数体######例子fucn = lambda x: x+10v1 = fucn(10)print(v1)
三元运算
num = input("请输入名字:")data = "臭不要脸" if "苍老师" in num else "正经人"print(data)## 结果 = 条件成立 if 条件 else 条件不成立
2.3 生成器import randomdef gen_random_num(max_count): counter = 0 while counter < max_count: yield random.randint(1000, 9999) counter += 1data_list = gen_random_num(300000000)# 在使用时,去data_list中获取即可# next(data_liat)
2,4 模块导包# from 文件夹.python文件 import 函数名 ############################ 找其他包 import sys# sys.path.append("D:/xx")# import x1.....###########相对路径#########################在pycharm中可自动添加##############import osimport syssys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
2.5 文件注释# 创建一个__init__.py文件添加注释
2.6 json格式转换# 将json格式转换为python格式import jsondata_dic = json.load(re.text)# 将python转换为json格式import jsondata_dic = json.dumps(data)###########例子############import jsonfrom decimal import Decimalfrom datetime import datetimedata = [ {"id": 1, "name": "heh", 'size': Decimal("18.99"), 'ctime': datetime.now()}, {"id": 2, "name": "www", 'size': Decimal("9.99"), 'ctime': datetime.now()}]class MyJSONEncoder(json.JSONEncoder): def default(self, o): if type(o) == Decimal: return str(o) # 字符串 elif type(o) == datetime: return o.strftime("%Y-%M-%d") return super().default(o)res = json.dumps(data, cls=MyJSONEncoder)print(res)
2.7 正则表达式import retext = "拉欧著牛逼, 在线要333232332.@qq.com, 手机号是13829323293"# 转义字符 d 代表数字phone_list = re.findall("1[3|5|8|9]d{9}", text)print(phone_list)# 找固定的字符phone_list = re.findall("[abc]", text)# 固定一个字符qphone_list = re.findall("q[abc]", text)# 除了abc之外的字符phone_list = re.findall("[^abc]", text)# 常用迭代器finditerphone_list = re.findall("[abc]", text)for item in phone_listprint(item.group)# 取出定位的内容 (?P<分组名字>正则)phone_list = re.findall("[abc]", text)for item in phone_listprint(item.group("分组名字"))
三、对象的了解 3.1 简单对象了解class Message: def send_email(self, email, content): data = "给{}发邮件, 内容是: {}".format(email, content) print(data)msg_object = Message() # 实例化对象msg_object.send_email("hehhhe.com", "注册成功")
3.2 三大方法封装, 继承, 多态
继承:(支持多继承)
class Father: def send_email(self): print("我是父类")class Son(Father): def inses_email(self): print("我是子类")son_objiect = Son()son_objiect.send_email()son_objiect.inses_email()
多态:含有send()方法
静态方法: 在函数上添加 :@staticmethod
绑定方法: 函数中默认有 def send(self):
3.3 成员 属性再绑定方法上添加 :@property 调用的时候就不用加 “方法()”了
3.4 成对方法在方法中:
# __enter__ 和__exit__是成对出现的# 前者是来凝结数据库,后者是关闭数据库
3.5 迭代器定义:
1、类中定义了__iter__和__next__两个方法2、__iter__方法需要返回对象本身3、__next__方法,返回下一个数据,如果没有数据,则需要抛出一个StopIteration异常