<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LibraSolo的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LibraSolo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LibraSolo]]></copyright><item><title><![CDATA[Python爬虫_深圳活动]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/120696343</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/120696343</guid><author>LibraSolo</author><pubDate>Mon, 11 Oct 2021 09:12:17 +0800</pubDate><description><![CDATA[一个人在深圳蛮无聊的所以爬一下豆瓣上深圳有的活动，方便参加。

获取 名字、标签、时间、位置、价格 对于自己中意的直接参加或者了解详细后再说，爬取这个主要是有生成一个表格方便直接处理。 下面是代码：
import re
import requests
import bs4
import re
import xlwt as xlwt

title = re.compile(r'&lt;a .*title=(.*)"&gt;')
tag = re.compile(r'&lt;a.*p=future"&gt;(.]]></description><category></category></item><item><title><![CDATA[Python开发__网易云爬虫(前端和数图展示未来分享)]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/115250422</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/115250422</guid><author>LibraSolo</author><pubDate>Fri, 26 Mar 2021 16:53:05 +0800</pubDate><description><![CDATA[# @Time:2021/3/18 22:42
# @Author:李 祥
# @File:playlist.py
# @Software:PyCharm
import csv
import json
import re
import time
import requests
import pymysql
from bs4 import BeautifulSoup
from multiprocessing import Pool

headers = {
    'User-Agent': 'Mozilla]]></description><category></category></item><item><title><![CDATA[算法与数据结构_常用排序总结（未完）]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/113651593</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/113651593</guid><author>LibraSolo</author><pubDate>Fri, 26 Mar 2021 16:50:54 +0800</pubDate><description><![CDATA[冒泡排序
# 冒泡排序
# 列表每两个相邻的数，如果前面比后面大，则交换这两个数
# 时间复杂度:O(n2)
def bubble_sort(li):
    for i in range(len(li) - 1):
        exchange = False
        for j in range(len(li) - i - 1):
            if li[j] &gt; li[j + 1]:
                li[j], li[j + 1] = li[j + 1.]]></description><category></category></item><item><title><![CDATA[Python进阶_装饰器]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/115250187</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/115250187</guid><author>LibraSolo</author><pubDate>Fri, 26 Mar 2021 16:49:17 +0800</pubDate><description><![CDATA[# @Time:2021/3/26 14:08
# @Author:李 祥
# @File:装饰器.py
# @Software:PyCharm

# 功能：不改变现有函数的前提下，扩展函数功能
# 语法：@

# 在执行printInfo前，进行权限校验；执行后，进行日志记录

# 装饰器的本质
def check(func):

    def checkAndLog():
        print("权限校验...")
        func()
        print("日志记录...")
]]></description><category></category></item><item><title><![CDATA[算法与数据结构_常用查找总结]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/113529586</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/113529586</guid><author>LibraSolo</author><pubDate>Mon, 01 Feb 2021 21:16:10 +0800</pubDate><description><![CDATA[顺序查找(线性查找)
从第一个元素开始，顺序进行搜索，直到找到元素或者搜素到最后一个元素。

时间复杂度：O(n)
内置函数为：index()

def linear_search(li, val):
    for ind, v in enumerate(li):
        if v == val:
            return ind
        else:
            return None


二分查找(折半查找)
它是一种效率较高的查找方法。但是，折半查找要求线性表必]]></description><category></category></item><item><title><![CDATA[Python开发_小说管理系统CLL版]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/112385847</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/112385847</guid><author>LibraSolo</author><pubDate>Fri, 08 Jan 2021 23:37:25 +0800</pubDate><description><![CDATA[小说管理系统CLI版
项目背景
​	随着网络文学的发展，读书不仅仅是在纸质文学上，大量的网络文学充斥着人们的视野。网络上越来越多的平台出现，有的小说只能在特定的平台展现。为了更好的记录小说，提升对小说各种信息的有效管理(从各种小说平台得到小说：暂未开发)，小说管理系统的需求也会随着增加。主要功能：书籍的录入、查询、修改以及退出功能。


需求分析
1.系统描述
​	系统版本1.0，主要功能为小说基本信息的记录、编辑、查找、删除功能
2.功能结构
​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下]]></description><category></category></item><item><title><![CDATA[Python进阶_继承]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/112385815</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/112385815</guid><author>LibraSolo</author><pubDate>Fri, 08 Jan 2021 23:32:19 +0800</pubDate><description><![CDATA[继承
# @Time:2021/1/5 16:48
# @Author:李 祥
# @File:继承.py
# @Software:PyCharm

# 继承
# 面临问题：
# 相似类型的定义过程中，大量重复性的代码

# 继承的概念:
# 在类名后面添加小括号，其中填写继承自哪个类型。
# 对相同的属性或方法进行抽象，形成类别的提炼或分拆。

# 好处：
# 让类的定义具有更好的扩展性。它可以使用现有类的所有功能，并在无需重新编写原来的类的情况下对这些功能进行扩展。

class Pet:

    d]]></description><category></category></item><item><title><![CDATA[Python进阶_封装]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/112243787</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/112243787</guid><author>LibraSolo</author><pubDate>Tue, 05 Jan 2021 16:47:47 +0800</pubDate><description><![CDATA[面向对象三大特征
继承、封装、多态
封装
对外部隐藏信息，不能随意访问/修改对象的数据、方法
通过限制类的属性和方法的访问方式，实现“封装”
封装的三个层次
类的封装：外部可以任意访问/修改类中的属性和方法
私有属性：外部不可以访问/修改类的属性或方法
公有方法+私有属性：外部有条件限制的访问/修改属性，调用方法
封装的表现
类的定义：将某些特定属性和方法进行 “隔离”
每个学生有自己的年龄，外部可以通过对象任意读取或修改
class Student:
    def __init__(self, name]]></description><category></category></item><item><title><![CDATA[Python爬虫_豆瓣TOP250]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/112199603</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/112199603</guid><author>LibraSolo</author><pubDate>Mon, 04 Jan 2021 20:17:22 +0800</pubDate><description><![CDATA[有数据库 和 表格 没有详细分开 后续整理吧
先上代码
import urllib.request, urllib.error
import bs4
import re
import xlwt
import sqlite3

findLink = re.compile(r'&lt;a href="(.*?)"&gt;')  # 创建正则表达对象，表示规则
findImgSrc = re.compile(r'img.*src="(.*?)"', re.S)  # re.S 让换行符包含在内
findTitle]]></description><category></category></item><item><title><![CDATA[Python进阶_面向对象]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/112062347</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/112062347</guid><author>LibraSolo</author><pubDate>Fri, 01 Jan 2021 19:44:27 +0800</pubDate><description><![CDATA[面向过程：是以过程为中心的编程思想。
面向对象：是对象及其之间的交互为中心的编程思想

class Car:  # 定义类: class 类名:

    energy = "电动"  # 属性,表示"特征"

    def move(self):  # 方法,表示"行为"
        print("在移动...")


c = Car()  # 对象实例化 : 对象名称 = 类名()
print("能源类型:", c.energy)  # 访问属性: 对象名称.属性
c.move()  # 调用方法]]></description><category></category></item><item><title><![CDATA[练习题_文件操作]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/112001385</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/112001385</guid><author>LibraSolo</author><pubDate>Thu, 31 Dec 2020 01:05:09 +0800</pubDate><description><![CDATA[完成用户注册/登陆功能。
******************************
操作编码	操作
[0] 	   注册
[1] 	   登录
******************************
请输入你要进行的操作编码：


注册:

(1)提示用户输入，用户名和密码，其中密码需要输入2次。

提示用户名只能为字母、下划线和数字；密码不能超过8位，密码只能为数字或大小写字母

(2)注册成功后,账户密码记录在文件中 (user.txt)

内容格式可以为		 姓名：密码

(3)用户名不能重]]></description><category></category></item><item><title><![CDATA[Python新手_QQ群]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/111991910</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/111991910</guid><author>LibraSolo</author><pubDate>Wed, 30 Dec 2020 15:37:12 +0800</pubDate><description><![CDATA[一起进步和答疑
非卖课组织

]]></description><category></category></item><item><title><![CDATA[Python进阶_模块与包]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/111936082</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/111936082</guid><author>LibraSolo</author><pubDate>Tue, 29 Dec 2020 20:00:46 +0800</pubDate><description><![CDATA[# @Time:2020/12/29 16:44
# @Author:李 祥
# @File:Module.py
# @Software:PyCharm

# 模块可理解为 一个Python文件

# 模块的导入
# 导入模块 import
import math  # 按住 ctrl + 鼠标左键 可跳转到对应文件中

print(math.pi)  # 模块的调用

# 导入自己定义的模块
import myModule

myModule.add2Num(1, 2)

# 模块的运行
# 模块方式
i]]></description><category></category></item><item><title><![CDATA[Python基础_文件操作]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/111754082</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/111754082</guid><author>LibraSolo</author><pubDate>Sat, 26 Dec 2020 16:20:27 +0800</pubDate><description><![CDATA[# @Time:2020/12/25 21:20
# @Author:李 祥
# @File:文件操作.py
# @Software:PyCharm

# 1.文件操作的基本流程：写(write)

f = open("test.txt", "w")   # 不存在文件则新建
f.write("hello world")
f.close()   # 关闭文件  打开要关闭 避免占内存


# 相对路径和绝对路径
# 绝对路径：从盘符开始
# 相对路径：型对于当前源码所在位置

f = open(r"F:\s]]></description><category></category></item><item><title><![CDATA[Python扩展_递归]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/111406123</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/111406123</guid><author>LibraSolo</author><pubDate>Sat, 19 Dec 2020 15:58:40 +0800</pubDate><description><![CDATA[# @Time:2020/12/19 15:30
# @Author:李 祥
# @File:递归.py
# @Software:PyCharm

# 递归
# 形式：自己调用自己的函数
# 递：递进
# 归：返回

# 递归的写法
# 编写函数体 (功能) 一个函数
# 确定结束条件和返回值
# 调用函数自身，修改参数


def printNum(n):
    print(n)
    if n == 1:
        return
    printNum(n - 1)     # 调用自身的函]]></description><category></category></item><item><title><![CDATA[Python扩展_全局变量和局部变量]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/111395657</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/111395657</guid><author>LibraSolo</author><pubDate>Fri, 18 Dec 2020 20:14:51 +0800</pubDate><description><![CDATA[# @Time:2020/12/18 19:51
# @Author:李 祥
# @File:变量.py
# @Software:PyCharm

# 局部变量 | 函数内部定义的变量
def test1():
    a = 100
    print(a)  # 局部变量，仅能在test1中使用


def test2():
    a = 200
    print(a)  # a互不影响


# print(a)      # 报错，只能在所定义的函数内使用

# 全局变量 | 在文件内有效，能在多]]></description><category></category></item><item><title><![CDATA[Python进阶_函数]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/111384461</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/111384461</guid><author>LibraSolo</author><pubDate>Fri, 18 Dec 2020 16:55:52 +0800</pubDate><description><![CDATA[# @Time:2020/12/18 15:37
# @Author:李 祥
# @File:function2.py
# @Software:PyCharm

# 函数的定义
def func():  # 见名知意
    pass  # 占位


# 函数的调用
func()

print(id(func()), type(func))


# 函数名也可以作为变量进行赋值\传递\储存
def func1():
    print("func1")


def func2():
    print("f]]></description><category></category></item><item><title><![CDATA[Python基础_函数]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/111350338</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/111350338</guid><author>LibraSolo</author><pubDate>Thu, 17 Dec 2020 23:45:06 +0800</pubDate><description><![CDATA[# @Time:2020/12/16 16:22
# @Author:李 祥
# @File:function.py
# @Software:PyCharm

# 函数
# 定义一个功能
def printInfo():
    print("-" * 20)
    print("人生苦短，我学Python")
    print("-" * 20)


# 函数的调用
printInfo()


# 带参数的函数
# a, b 为"形参"
def add2Num(a, b):
    c = a + b]]></description><category></category></item><item><title><![CDATA[练习题_数据类型2(Python)]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/111350004</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/111350004</guid><author>LibraSolo</author><pubDate>Thu, 17 Dec 2020 23:16:18 +0800</pubDate><description><![CDATA[1.写一个代码片段统计一个字符串中出现的字符及其个数。（至少2种方式：分别使用列表和字典来实现）

例如对于字符串“abcaaabcd”，统计的结果是：a（4个）b（2个）c（2个）d（1个）

2.循环提示用户输入，并将输入内容追加到列表中（如果输入N或n则停止循环），输入结束打印列表
如果用户输入的信息已经存在，则提示用户所输内容已存在，不再重复添加。

提示：对于输入内容，需要考虑大小写和空格的情况

3.有如下值 li= [11,22,33,44,55,66,77,88,99,90] ,将所有大于 ]]></description><category></category></item><item><title><![CDATA[练习题_数据类型(Python)]]></title><link>https://blog.youkuaiyun.com/LibraSolo/article/details/111349950</link><guid>https://blog.youkuaiyun.com/LibraSolo/article/details/111349950</guid><author>LibraSolo</author><pubDate>Thu, 17 Dec 2020 23:14:31 +0800</pubDate><description><![CDATA[1.实现一个整数加法计算器（多个数相加）：
如：content = input(“请输入内容:”) 用户输入：5+9+6 +12+ 13，然后进行分割再进行计算。
2.计算用户输入的内容中有几个整数（以个位数为单位），并打印输出。

如：content = input(“请输入内容：”)
如：fhdal234slfh98769fjdla
输出：8个数字：23498769

3.查找列表wordlist 中的元素，移除每个元素的空格，并找出以"A"或者"a"开头，并以"c"结尾的所有元素，并添加到一个新列表中]]></description><category></category></item></channel></rss>