![](https://img-blog.csdnimg.cn/20210103153659533.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
python基础
文章平均质量分 53
字符串、列表、字典
做个不一样的小丑
我觉得面对困难还能保持微笑的男人最帅
展开
-
常见的排序算法
冒泡排序def bubblesort(alist): """冒泡排序""" for i in range(len(alist)-1): stop = True # 就是挨个进行比较,大的或小的就后面放,一次确定一个最大值或者最小值 for j in range(len(alist)-1-i): if alist[j] > alist[j+1]: alist[j],alist[j+1原创 2021-04-09 14:00:48 · 164 阅读 · 0 评论 -
Python实现栈 队列 双端队列
栈特点:后进先出(LIFO, Last In First Out)栈的操作push(item) 添加一个新的元素到栈顶pop() 弹出栈顶元素peek() 返回栈顶元素is_empty() 判断栈是否为空size() 返回栈的元素个数class Stack(): def __init__(self,list=[]): '''初始化一个栈''' self.__stack = list def push(self,item):原创 2021-04-08 19:13:09 · 245 阅读 · 0 评论 -
Python实现单向链表 单向循环链表 双向链表
单向链表class Node: def __init__(self,var): self.var = var self.next = Noneclass SingleLinkList: def __init__(self,node=None): self.__head = node # 判断链表是否为空 def is_empty(self): return self.__head == None原创 2021-04-07 20:00:52 · 201 阅读 · 0 评论 -
Python爬虫-5 scrapy框架
1 安装2 框架组成引擎(engine)下载器(downloader)爬虫spiders调度器(scheduler)管道(Item pipeline)3 工作原理4 如何使用5 保存数据的流程如果要把数据通过`json`形式 保存在文件的话,那么 pipeline 文件中,应该使用 JsonLinesItemExporter 方法在爬虫文件中,请求其他的链接地址传递请求的参数获取传递的参数如果项目初始的请求方式就是 post 的话, 那么需要 在 爬虫文件中 重写 start_request 方法scra.原创 2021-03-24 19:15:57 · 229 阅读 · 0 评论 -
Python爬虫-4 selenium
selenium支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动真实浏览器完成测试。selenium也是支持无界面浏览器操作的使用selenium+chromedriver模拟浏览器行为获取数据selenium相当于是一个机器人。可以模拟人类在浏览器上的一些行为,自动处理浏览器上的一些行为,比如点击,填充数据,删除cookie等。chromedriver是一个驱动Chrome浏览器的驱动程序,使用他才原创 2021-03-22 14:03:28 · 217 阅读 · 0 评论 -
BeautifulSoup练习
中国天气网http://www.weather.com.cn/textFC/hb.shtml爬取除了港澳台所有地区的城市名和最低气温然后再获取温度最低是个城市import requestsfrom bs4 import BeautifulSoupfrom pyecharts.charts import Barfrom pyecharts import optionsheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Wi原创 2021-03-19 15:27:26 · 490 阅读 · 4 评论 -
xpath练习
买家秀http://www.tbqq.net/爬取图片与名字import requestsimport osfrom lxml import etreefrom urllib import requestimport threadingdef maijiaxiu(url,page): res = requests.get(url=url,headers=headers) # print(res.text) content = res.text tree =原创 2021-03-16 19:33:55 · 670 阅读 · 0 评论 -
爬取站长之家
爬取站长之家爬取图片https://sc.chinaz.com/tupian/可以随便找一个分类进行爬取练习注意:这里的src存在一个懒加载,你先定位到第一张图片的代码块,然后找到最后一张图片的代码块,你会发现这里的src还是src2,如果你把页面翻到最后一张图片,你再去看src就是src了,多看源码这里我就没有去做分页爬取了,大家也可以去试一试分页爬取import requestsfrom lxml import etreefrom urllib import requestimport原创 2021-03-16 18:56:02 · 651 阅读 · 0 评论 -
Python爬虫-2 xpath语法
XPath使用xpathpip install lxmlimport lxmlfrom lxml import etreeXPath Helper插件chrome插件网:http://www.cnplugins.com/添加插件Ctrl + Shift + X打开或关闭插件XPath 术语节点(Node)在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。选取节点X原创 2021-03-16 17:25:03 · 194 阅读 · 0 评论 -
爬取一些翻译
百度翻译找到百度翻译这个页面,右键检查,点到Network,再点一下XHR,再在那块翻译板上随便输入点什么,再删除,直到出现sug这个接口,点到sug,我们看一下Response,可以很清楚的看到是一个json字符串,从Headers中的General可以清楚的看到这是一个post请求,From Data里的kw参数就是你要翻译的数据演示如下:import requestsurl = 'https://fanyi.baidu.com/sug'headers = { 'User-Ag原创 2021-03-16 11:07:51 · 515 阅读 · 3 评论 -
Python爬虫-1 请求头快速添加引号
urllib库图片下载import urlliburllib.request.urlretrieve(url='图片地址',filename='存储路径')# 掌握这一个方法就好了如果你不使用这个方法,就需要先获取图片的二进制数据,也就是对图片地址发起请求,,再以wb的方式写入文件注意这只是演示,import requestscontent = requests.get(url='图片地址',headers=headers).contentwith open('c,存储路径','wb'原创 2021-03-15 09:20:18 · 982 阅读 · 0 评论 -
Python操作MySQL数据库
增:删:改:查这是我所操作的表的数据mysql> create table X( -> name varchar(30), -> age int);Query OK, 0 rows affected (0.02 sec)mysql> insert into X values('张三',18),('李四',16),('王五',20);Query OK, 3 rows affected (0.00 sec)mysql> select * from .原创 2021-02-25 20:49:04 · 98 阅读 · 1 评论 -
Python json模块和pickle模块
json模块# 序列化:将数据从内存持久化保存到硬盘(不一定是硬盘)的过程# 反序列化:将数据从硬盘加载到内存的过程# write 只能写入二进制或字符串# 字典、列表、元组和数字等都不能直接写入到文件里# 将数据转换成为字符串:repr/str 使用json模块# json的本质就是字符串,区别在于json里要用双引号表示字符串# 将数据转换成为二进制:使用pickle模块import jsonfile = open('name.json', 'w', encoding='utf8原创 2021-02-01 21:10:38 · 112 阅读 · 0 评论 -
Python正则表达式
匹配单个字符与数字格式含义.匹配除换行符以外的任意字符[0123456789][]是字符集合,表示匹配方括号中所包含的任意一个字符[good]匹配good中任意一个字符[a-z]匹配任意小写字母[A-Z]匹配任意大写字母[0-9]匹配任意数字,类似[0123456789][0-9a-zA-Z]匹配任意的数字和字母[0-9a-zA-Z_]匹配任意的数字、字母和下划线[^good]匹配除了good这几个字母以外的所有字符,中原创 2021-02-01 20:54:52 · 158 阅读 · 1 评论 -
Python 复制文件和目录
复制文件无非就是一个读取文件和写入文件的操作def copy_file(src_path,target_path): # 注意文件可能是视频,图片,所以用rb和wb操作较好 # 如果文件过大建议使用ab进行写入,一次读取1024个字节 fp1 = open(src_path, 'rb') # fp2 = open(file_path2,'wb') fp2 = open(target_path, 'ab') while True: conte原创 2021-01-28 17:33:33 · 1175 阅读 · 8 评论 -
Python 文件读写-1(with关键字的使用 异常处理 finally关键字的使用 csv文件的读写)
打开文件Python 里使用 open内置函数打开一个文件open参数介绍file :用来打开指定的文件(不是文件的名字,而是文件的路径:相对路径和绝对路径)mode:打开文件时的模式,默认是 r 表示只读encoding:打开文件时的编码方式文件的路径路径分为两种:绝对路径:从电脑盘符开始的路径相对路径:当前文件所在文件夹开始的路径(如果你想打开的文件和你现在所写的文件在同一个文件,就可以直接写文件名)(注意:我的路径应该是和你们的不一样的,不要直接复制,最好使用自己的文件路径)原创 2021-01-28 17:13:26 · 266 阅读 · 0 评论 -
Python (os模块:删除文件夹 计算文件夹的大小)
这里需要用到os模块删除文件夹大家可以去传入一个文件夹的路径去试一试# 传入path的时候需要传入绝对路径def del_path(path): if not os.path.exists(path): return '文件路径不存在' # 获取当前路径下的所有文件和文件夹 file_list = os.listdir(path) for file in file_list: # 路径拼接 # 不拼接直接去判断file是原创 2021-01-26 11:05:44 · 256 阅读 · 3 评论 -
Python函数的递归 (用递归求1到n的和 用递归求第n个斐波那契数 求嵌套列表中的数字之和 快速排序)
递归函数简单来说就是自己调自己;递归最重要的就是找到出口(也就是停止的条件)cou = 5def say_love(): print('我爱你',end=' ')# 把这五个我爱你打在一行 global cou cou = cou-1 if cou>0: say_love()say_love()# '我爱你 ''我爱你 ''我爱你 ''我爱你 ''我爱你 '一个简单的演示,但这个需要调用全局标量进行判断,我们也可以直接通过传参,用return原创 2021-01-22 17:13:41 · 5051 阅读 · 4 评论 -
Pyhton 兔子繁衍问题(后有递归求法)(设有一对新生的兔子从第4个月开始他们每个月月初都生一对新兔子, 新生的兔子从第4个月开始又每个月月初生一对兔子,求n个月后兔子的总对数)
设有一对新生的兔子从第3个月开始他们每个月月初都生一对新兔子,新生的兔子从第3个月开始又每个月月初生一对兔子,求n个月后兔子的总对数为什么n要-1我们假设初始的这一对兔子是0个月过1个月长1个月,长了2个月后,第3个月月初,它才2个月吧,就可以生兔子了新生的一对兔子是月初出生的,所以过完那个月就一个月大了,再过1个月就可以生兔子了所以初始化的时候是没有一个月的兔子的,需要过一个月才有,所以我们就减少一次循环注意我这也只是推理,并没有去根据规律去做def f(n): # 一个月的原创 2021-01-22 09:37:55 · 4186 阅读 · 5 评论 -
使用Python函数写一个万历表
# 判断是否闰年def isleap(year): return year % 4 == 0 and year % 100 != 0 or year % 400 == 0# 判断月的天数def month_days(year,month): if month in [1,3,5,7,8,10,12]: return 31 if month == 2: if isleap(year): return 29原创 2021-01-20 20:47:39 · 2981 阅读 · 27 评论 -
Python面向对象讲解4(继承 多态 面向对象相关的方法)
继承的使用子类的方法都比父类的方法更多更完善,否者继承就没有多大作用了class Animals(object): def __init__(self, name, age): self.name = name self.age = age def sleep(self): print(self.name + '正在睡觉')class Dog(Animals): def bark(self): print(se原创 2021-01-20 15:53:04 · 297 阅读 · 3 评论 -
Python面向对象讲解3(对象属性和类属性 私有属性 类方法和静态方法)
对象属性和类属性class Person(object): type = '人类' # 这个属性定义在类里,函数之外我们称之为类属性 def __init__(self, name, age): self.name = name self.age = agep1 = Person('张三', 18)p2 = Person('李四', 19)x = p1# p1和p2称呼他们为实例对象# 只要创建一个实例对象,这个实例对象就有自己的属性#原创 2021-01-20 13:21:01 · 567 阅读 · 10 评论 -
Python面向对象讲解2(运算符相关的魔法方法,内置属性)
运算符相关的魔法方法可以自行去定义运算方式class Person(object): def __init__(self, name, age): self.name = name self.age = age def __eq__(self, other): # if self.name==other.name and self.age ==other.age: # return True # r原创 2021-01-20 10:54:10 · 288 阅读 · 13 评论 -
Python面向对象讲解1(类的定义,self的使用,魔法方法)
1 类的定义class 类名:类名一般需要遵守大驼峰命名法,每一个单词的首字母都大写;class <类名>:class <类名>(object):原创 2021-01-20 10:17:20 · 258 阅读 · 3 评论 -
对字典列表和类对象列表进行一些函数运算,key关键字的使用
对字典列表进行操作比如我们要根据字典的某个key值进行排序一般方法应该是使用一些排序方法进行的,比如冒泡排序,就是挨个进行比较满足条件就交换位置persons = [ {'name':'张三','age':18,'score':80}, {'name':'李四','age':17,'score':70}, {'name':'王五','age':18,'score':89}, {'name':'马六','age':20,'score':100}, {'name':原创 2021-01-18 16:59:22 · 1734 阅读 · 17 评论 -
Python中四舍五入的讲解
round()函数(注意:下面的我也不清楚是否正确,我只是发表一下我的观点)对于简单的舍入运算,使用内置的 round(value, ndigits) 函数即可强烈建议不要去深究,就直接得结果就好ndigiths可以为正数,也可以为负数,还可以为0,可以为空n:就是精确到第n位小数,对整数没有影响,1为精确到十分位(注意:小数就是从十分位往后推的)-n:就是精确到整数位,-1为精确到十位,然后就是百位千位…有小数位就全舍掉,不管多大,但会保留一个为0的小数位0:精确到个位,但会保留一个为0的原创 2021-01-15 14:15:26 · 8111 阅读 · 10 评论 -
字符串对齐,删除字符串中不需要的内容,格式化打印字符
删除字符串中不需要的内容1、strip()方法strip:默认是去掉首尾的空白字符,但是也可以指定其他字符;lstrip:只去掉左边的;rstrip:只去掉右边的;print('+++apple '.strip()) # '+++apple'print('+++apple '.lstrip('+')) # 'apple 'print(' apple '.rstrip()) # ' apple'这个只能去除首尾的,如果想去除中间的字符,可以使用倒replace原创 2021-01-14 17:12:02 · 1159 阅读 · 6 评论 -
Python 列表推导式 生成器表达式
列表推导式# 列表推导式就是使用一个简单的方法创建一个列表# 列表里元素的类型是根据for前面的数据类型而定的a = [m for m in range(31)]print(a)# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]b = [a[m:m + 3] for m in range(0, 31, 3)]# 这里原创 2021-01-14 14:06:43 · 1476 阅读 · 3 评论 -
Python集合的讲解、一些公关方法
集合的使用-集合也是用{}包裹起来的,集合是一个不重复的无序的,所有集合一般用来去重操作的-注意:空集合使用set()表示,{}表示空字典persons = {'zhangsan', 'lisi', 'jack', 'lisi', 'jack', 'wangwu', 'maliu'}print(persons) # {'zhangsan', 'wangwu', 'jack', 'maliu', 'lisi'}persons.add('李白') # 添加一个元素,但位置不确定,所有你们运行的答案原创 2021-01-14 09:47:28 · 238 阅读 · 2 评论 -
Python字符串的常见操作 字符串判断 字符串分割
注意:字符串是不可变的数据类型,对字符串的任何操作,都不会改变原有字符串!!一、字符串的下标与切片:1、下标又称之为索引,在python中字符串、列表、元组都可以通过下标来获取或者操作数据;2、注意:字符串和元组都不能通过下标来更改原有数据;3、下标都是从0开始的,0表示第一个的元素的下标,-1代表最后一个元素的下标,-2是倒数第二个的下标,以此类推;word='hello world'print(word[4])# 'o'print(word[0])# 'h'print(word[-1])原创 2021-01-14 09:11:50 · 1052 阅读 · 3 评论 -
Python常用模块的常用方法介绍 os、math、random、time、datetime、国内常见镜像
导入模块的一些语法from random import randint#2、from 模块名 import 函数名,导入模块里的一个方法或变量from math import * #3、from 模块名 import * ,导入模块里的'所有'(并不是所有的都能导进来)方法和变量import datetime as dt#4、导入一个模块并给它起一个别名from copy import deepcopy as dc#5、导入模块里的一个方法或变量,并给它起一个别名...原创 2021-01-12 14:38:59 · 3581 阅读 · 18 评论 -
Python 进制转换 int、bin、oct、hex
原理十进制转n进制都可以使用倒除法:对十进制进行除n的运算,直到商为0为止,然后将各个步骤中得到的余数倒着写出来.n进制转十进制:(例子:二进制转十进制)101001 => 2^5 + 2^3 + 1 = 32 + 8 + 1 = 4110111 => 2^4 + 2^2 + 2 + 1 = 16 + 4 + 2 +1 = 23同样类推一下,n进制转十进制就是将2为底换成n为底就好了还有其他方法,比如使用中间二进制,例如,将十进制转成八进制或者十六进制,先转成二进制再转成八进制或原创 2021-01-12 10:50:50 · 5913 阅读 · 16 评论 -
Python函数练习
1.编写函数,求1+2+3+…N的和# 不可使用sum函数# def get_sum(n):# if n == 1:# return 1# return n + get_sum(n - 1)def get_sum(n): s = 0 for i in range(1,n+1): s += i return sprint(get_sum(100))# 5050# print(sum(range(101)))# 5050 我原创 2021-01-07 20:02:12 · 703 阅读 · 7 评论 -
Python 名片管理系统、简易的数字型列表管理系统
这是一个非常简易的名片管理系统发出来只要是希望刚大家能把前面所学的知识合理的运用起来,学了后面的知识后,这个系统肯定是还能完善很多的,缺点:1、删除信息的时候,如果重名就只能删除前面一个,不能想删哪个就删哪个2、存储也是一次性的,以后会把信息存到数据库或者是文件中,这样数据就不是一次性的了3、只能根据名字去修改删除查询数据,电话也是唯一的,可以试着加个根据电话修改删除查询数据;4、大家还可以多加一些信息,靓丽而行吧,信息一朵,是很容易出错的,5、可以加几个那种唯一的信息,比如id,这样查询修改原创 2021-01-06 17:49:53 · 2016 阅读 · 10 评论 -
Python函数的介绍 函数的闭包、filter类、map类、内置函数总结
函数基础1.函数理解函数就是一堆准备好的代码,在需要的时候调用这堆代码2.函数定义def 函数名(形参): 函数体3.函数返回值return和yield用来返回,如果没有返回值,默认的返回值是Nonereturn:返回的是什么就是什么,一般情况下一个函数就执行一个return,重点掌握yield:返回的是一个generator对象,这个就学习爬虫框架的时候用的多generator的调用方式:1、使用next();2、使用for…in循环原创 2021-01-05 15:57:15 · 859 阅读 · 4 评论 -
Python基础练习题(按条件对指定序列求和,打印99乘法表、求斐波那契数列、百马百担、求水仙花数、求n以内的所有质数(素数)和)
1.打印99乘法表用于理解循环的使用# a=0# while a<9:# a+=1# b=0# while b<a:# b+=1# print(b,'*',a,'=',a*b,sep='',end='\t') #sep是分隔符默认是空格,\t是制表符# print()for i in range(1,10): for j in range(1,i+1): print(f'{j}*{i}={原创 2021-01-03 15:35:45 · 8400 阅读 · 44 评论 -
Python元组和字典的使用、使用字典的注意事项、字典查找数据、字典的增删改、字典的合并 update方法、字典的遍历
1.元组的使用 count 和index方法-元组和列表很像,都是用来保存多个数据;-使用一对小括号()来表示一个元组;-元组和列表的区别在于,列表是可变的,而元组是不可变数据类型;-由于它是不可变的数据类型,所有就不能对一个元组进行增删改;-元组我说知道能使用的也就count和index两个方法;-count用来计算某个元素在元组中的个数,index用来返回某个元素的下标;-元组也可以使用下标查找元素,也可以使用切片查看,但是不能用它们修改元组数据;-使用tuple函数可以将一个可迭代对象原创 2021-01-01 17:06:59 · 1758 阅读 · 7 评论 -
Python中列表的相关操作 列表推导式、求列表长度、列表的下标与切片、列表的增删改查,求最大数、最小数和求和、列表的带下标的遍历、冒泡排序
本期内容:求列表长度、列表的下标与切片、列表的增删改查,求最大数、最小数和求和、冒泡排序1.求列表的长度len() 函数返回列表的长度,就不演示了2.列表的下标与切片 改查列表也能根据下标查找数据,也能根据切片找到相应长度的内容,具体见字符串常见操作,但不同于字符串的是,列表还可以根据下标和切片修改本身的数据,请看下面的演示:name1 = ['张三', '李四', '马武', '帅哥']name1[1] = 1print(name1) # ['张三', 1, '马武', '帅哥']# na原创 2020-12-31 17:30:17 · 625 阅读 · 2 评论 -
Python的常用运算符
算术运算符:加(+)、减(-)、乘(*)、除(/)、取余(%)、整除(//)、幂运算(**)print(10+1)# 11print(10-1)# 9print(10*2)# 20print(10/2)# 5.0# 注意整除是先除得到商再向下取整# 对一个数向下取整就是小于或等于这个数的最大整数print(10//3)# 3print(-10//3)# -4print(10**2)# 100幂运算还可以使用math模块里的pow()函数,math模块里还有几个常用的函数,ceil()向原创 2020-12-28 20:09:16 · 887 阅读 · 5 评论