自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 问答 (4)
  • 收藏
  • 关注

原创 爬虫-实现一个简易的网页采集器

1 requests模块的基本使用"""爬虫""""""什么是爬虫? 就是通过编写程序模拟浏览器上网,然后让其去互联网上爬取数据的过程爬虫的分类: 通用爬虫:抓取互联网中的一整张页面数据 聚焦爬虫:抓取页面中的局部数据 增量式爬虫:用来监测网站数据更新的情况,以便爬取到网站最新更新出来的数据""""""requests模块:Python中封装好的一个基于网络请求的模块。作用:用来模拟浏览器发请求requests模块的编码流程: 1.指定url

2022-04-03 21:17:16 1425

原创 Anaconda基本使用

在指定目录的终端中输入jupyter notebook指令,就可以启动服务jupyter notebook 快捷键: 添加cell:a,b 删除cell:x 执行cell:shift+enter 自动补全:tab 切换cell的模式: m切换成markdown模式,y切换成code模式 打开帮助文档:光标放在需要帮助的关键字上,然后按shift+tab...

2022-04-03 16:49:05 886

原创 Python 异常处理

# 结构一:单分支try: num = int(input('请输入数字:')) # 出现ValueError错误之后,不执行下面语句,直接跳转到except语句. print(num) print('Hello World')except ValueError: print('您输入含有不是数字的字符了')print('到这里了')# 结构二:多分支,哪个类型报错了就停在那,不执行try下面的代码,执行错误类型的代码excepttry: num.

2022-03-06 21:24:07 521 1

翻译 Python 特殊的双下划线方法

# !/usr/bin/env python# -*- coding:utf-8 -*-# 1、__len__class A: def __init__(self, name, age): self.name = name self.age = age def __len__(self): print('你使用了 len(对象) ,我被触发啦') print(self.__dict__) retu

2022-03-05 00:24:47 724

原创 Python 反射

# !/usr/bin/env python# -*- coding:utf-8 -*-"""反射""""""反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射)反射组合函数: hasattr、getattr、setattr、delattr"""# 一、对 对象的反射class Person: animal = '高级动物' def __init__(self, name, age): self.n

2022-03-04 12:17:37 324

原创 Python property的应用-商品类

# !/usr/bin/env python# -*- coding:utf-8 -*-"""请按下列要求,完成一个商品类。- 封装商品名,商品原价,以及折扣价。- 实现一个获取商品实际价格的方法price。- 接下来完成三个方法,利用属性组合完成下列需求: - 利用属性property将此price方法伪装成属性。 - 利用setter装饰器装饰并实现修改商品原价。 - 利用deltter装饰器装饰并真正删除原价属性。"""class Product: def

2022-03-04 10:41:15 3472

翻译 Python 内置函数 isinstace 与 issubclass

# !/usr/bin/env python# -*- coding:utf-8 -*-# isinstance 判断的是对象与类的关系class A: passclass B(A): passobj = B()# isinstance(a,b) 判断的是 “对象a” 是否是 "b类" 或者 "b类派生类" 实例化的对象.print(isinstance(obj, B)) # Trueprint(isinstance(obj, A)) # True#

2022-03-02 12:46:13 130

翻译 Python property属性

# !/usr/bin/env python# -*- coding:utf-8 -*-"""property 将执行一个函数需要函数名()方式调用,变换成直接函数名调用. 将动态方法 伪装 成了一个属性,虽然在代码级别上没有什么提升,但是让你看起来更合理.应用:工作中如果遇到了一些类似于属性的方法名,可以让其伪装成属性"""# 计算BMIclass Bmi: def __init__(self, name, weight, height): s

2022-03-02 12:33:28 59

翻译 Python 类方法和静态方法

# !/usr/bin/env python# -*- coding:utf-8 -*-"""类方法:被@classmethod装饰器装饰的方法类方法一般是通过类名去调用的,并且自动将类名地址传给cls。通过对象调用类方法也可以,但是传给cls的地址还是类名的地址。(一般不通过对象调用类方法)类方法的作用: 1、在类的内部可以拿到类的地址,从而可以实例化对象 2、可以操作类的属性,如增删改查。(对象不能增删改类的属性)"""class Person: def

2022-03-02 11:40:42 58

原创 Python 类的私有成员

# !/usr/bin/env python# -*- coding:utf-8 -*-"""类的私有成员: 遇到重要数据、功能(只允许本类使用的一些方法、数据),设置成私有成员。类在加载到内存的时候,只要遇到类中的私有成员,都会在私有成员前面加上 "_类名"。""""""私有类的属性: 1、只能在类的内部访问和使用私有类的属性 2、在类的外部不可以访问和使用私有类的属性 3、在类的子类(派生类)不可以访问父类的私有类的属性"""class Pers

2022-03-01 22:41:10 2433

原创 Python 扑克游戏

运用类,完成一个扑克牌类(无大小王)的小游戏:用户需要输入用户名,以下为用户可选选项:1. 洗牌2. 随机抽取一张3. 指定抽取一张4. 从小到大排序5. 退出洗牌:每次执行的结果顺序随机。随机抽取一张:显示结果为:太白金星您随机抽取的牌为:黑桃K指定抽取一张:用户输入序号(1~52)比如输入5,显示结果为:太白金星您抽取的第5张牌为:黑桃A将此牌从小到大显示出来。A -> 2 -> 3 …-> K提供思路:import randomclass Gam

2022-03-01 16:01:43 5117

翻译 Python 类的约束

"""约束. 其实就是⽗类对⼦类进⾏约束. ⼦类必须要写xxx⽅法. 在python中约束的⽅式和⽅法有两种:1. 使⽤抽象类和抽象⽅法, 由于该⽅案来源是java和c#. 所以使⽤频率还是很少的2. 使⽤⼈为抛出异常的⽅案. 并且尽量抛出的是NotImplementError. 这样比较专业, ⽽且错误比较明确.(推荐)"""# !/usr/bin/env python# -*- coding:utf-8 -*-# Author: Howard# Time: 2022-03-01 10

2022-03-01 11:47:39 405

原创 ROS Couldn‘t find executable named xxx.py问题

完全根据ros官方教程http://wiki.ros.org/cn/ROS/Tutorials/WritingPublisherSubscriber%28python%29,还出了这个问题[rosrun] Couldn’t find executable named talker0226.py原因是:py文件的没有执行权限解决:对文件右键,选择属性,然后选择权限,勾选允许作为程序执行文件。如下图...

2022-02-26 17:17:37 1180

原创 求圆的周长和面积

定义一个类,计算圆的周长和面积class Circle: def __init__(self, radius): self.radius = radius self.pi = 3.14 def perimeter(self): return 2 * self.pi * self.radius def area(self): return self.pi * self.radius * self.radius

2022-02-26 14:42:47 235

原创 暴力摩托程序

'''暴力摩托程序(完成下列需求): 1. 创建三个游戏人物,分别是: ​ 苍井井,女,18,攻击力ad为20,血量200 ​ 东尼木木,男,20,攻击力ad为30,血量150 ​ 波多多,女,19,攻击力ad为50,血量80 2. 创建三个游戏武器,分别是: ​ 平底锅,ad为20 ​ 斧子,ad为50 ​ 双节棍,ad为65 3. 创建三个游戏摩托车,分别是:​ 小踏板,速度60迈​

2022-02-26 11:33:04 575

原创 Python 类与类之间的关系

# !/usr/bin/env python# -*- coding:utf-8 -*-# 1、依赖关系class Person: def __init__(self,name): self.name = name def open(self, obj_door): print(f'{self.name}默念三声:芝麻开门......') obj_door.open_door() def close(self, obj_d

2022-02-26 00:57:06 550

原创 模拟游戏人物类

模拟王者荣耀写一个游戏人物的类.要求:创建一个 Game_role的类.构造方法中给对象封装name,ad(攻击力),hp(血量).三个属性.创建一个attack方法,此方法是实例化两个对象,互相攻击的功能:例: 实例化一个对象 李白,ad为30, hp为100实例化另个一个对象 王昭君 ad为20, hp为150李白通过attack方法攻击王昭君,此方法要完成 '谁攻击谁,谁掉了多少血, 还剩多少血’的提示功能.class Game_role: def __init__(s

2022-02-26 00:55:08 3154

翻译 Python logging日志模块

1简单版日志# !/usr/bin/env python# -*- coding:utf-8 -*-# 简单版日志,屏幕输出和写入文件,只能二选一。import logging# 默认不打印debug和info的日志信息"""logging.debug('debug message')logging.info('info message')logging.warning('warning message')logging.error('error message')logging.

2022-02-23 19:03:41 126

原创 Python 生成随机验证码

生成一个4位随机验证码(包含数字大小写字母)# !/usr/bin/env python# -*- coding:utf-8 -*-import randomdef rand_code(): random_code = "" for i in range(4): rand_num = random.randint(0, 9) rand_lowchar = chr(random.randint(97, 122)) rand_upc.

2022-02-23 13:56:36 2362

原创 Python 文件查找

利用递归寻找文件夹中所有的文件,并将这些文件的绝对路径添加到一个列表中返回(面试题)。import osdef find_file(path, file_path=[]): file_dir = os.listdir(path) file_dir_abspath = [os.path.join(path, i) for i in file_dir] for j in file_dir_abspath: if os.path.isfile(j): .

2022-02-23 12:42:29 2459

原创 Python 密码加密以json字符串存储

题目:写函数,让用户输入用户名和密码,将密码转化成密文,然后构建一个字典,字典的键为用户名,值为其对应的密码,将这个字典以json字符串的形式写入文件中。# !/usr/bin/env python# -*- coding:utf-8 -*-import hashlibimport jsondef register(): user_dict = {} username = input('请输入您的用户名:').strip() password = input('请.

2022-02-23 11:48:53 817

原创 Python random模块

random常用模块讲解# !/usr/bin/env python# -*- coding:utf-8 -*-import random# 大于0小于1的 随机小数print(random.random())# 指定区间的 随机小数print(random.uniform(2, 7))# 指定区间的随机整数,包含区间两端的整数print(random.randint(3, 17))# 指定区间的随机整数,顾头不顾尾,可以加步长print(random.randrange(1

2022-02-22 23:52:57 59

翻译 Python time模块和datetime模块

1 time模块常用讲解# !/usr/bin/env python# -*- coding:utf-8 -*-import time# 时间戳print(time.time()) # 1645541324.44801 1970年到现在所经过秒数# 格式化时间print(time.strftime('%Y-%m-%d'), type(time.strftime('%Y-%m-%d'))) # 2022-02-22 <class 'str'>print(time.st

2022-02-22 23:50:56 102

原创 Python序列化模块 json和pickle

1 序列化模块文件的存和取遇到的矛盾:目前我们将数据结构(list,dict)转化成字符串可以直接存储在文件中,但是读取出来时,遇到麻烦了,不能将读取到的字符串类型数据转回原来的数据类型(列表、字典),取出来的是字符串类型,不好操作。l = [1,2,3]with open('test', encoding='utf-8', mode='a') as f: f.write(str(l)) # 写进文件的都是字符型类型with open('test', encoding='utf-8

2022-02-20 23:53:39 253

原创 带参数装饰器应用-登录不同软件

# !/usr/bin/env python# -*- coding:utf-8 -*-"""编写装饰器完成下列需求:用户有两套账号密码,一套为京东账号密码,一套为淘宝账号密码分别保存在两个文件中。设置四个函数,分别代表 京东首页,京东超市,淘宝首页,淘宝超市。启动程序后,呈现用户的选项为: 1,京东首页 2,京东超市 3,淘宝首页 4,淘宝超市 5,退出程序四个函数都加上认证功能,用户可任意选择,用户选择京东超市或者京东首页,只要输入一次京东账号和密

2022-02-20 13:31:27 347

原创 装饰器的应用-访问频繁

# !/usr/bin/env python# -*- coding:utf-8 -*-"""实现一个装饰器,限制该函数被调用的颜率,5秒一次"""import timedef time_limit_decorator(func): # 记录第一次调用函数hello的时间节点。闭包,这个变量不会随着函数调用结束而消失 first_time_call = 0 def inner(*args, **kwargs): nonlocal first_tim

2022-02-20 11:20:19 140

原创 多个装饰器装饰一个函数

# !/usr/bin/env python# -*- coding:utf-8 -*-def wrapper1(func1): # func1 == func原函数 def inner1(*args, **kwargs): print('wrapper1, before func') ret1 = func1(*args, **kwargs) print('wrapper1, after func') return ret1

2022-02-18 16:34:40 218

原创 Python 带参数的装饰器

带参数的装饰器讲解# !/usr/bin/env python# -*- coding:utf-8 -*-# 1、带参数的装饰器def wrapper_out(parameter): print(parameter) def wrapper(func): def inner(*args, **kwargs): ret = func(*args, **kwargs) return ret retur.

2022-02-18 15:49:28 4281

原创 Python 装饰器的应用---信息获取

# !/usr/bin/env python# -*- coding:utf-8 -*-"""实现一个装饰器,每次调用函数时,将函数名以及调用此函数的时间节点写入文件decorator中。"""import time# 获取函数调用时间和函数名的装饰器def get_info_decorator(func): def inner(*args, **kwargs): ret = func(*args, **kwargs) with open('info

2022-02-18 14:35:01 437

原创 Python 装饰器的应用---登录认证

"""需求:登录CSDN社区成功后,才可以访问"博客"、"课程"、"问答"等页面已有账户文件 csdn 及账户密码:albert|123456don|456jack|789"""# 记录用户登录状态的字典user_status = {'usname': None, 'status': False}def get_userpwd(): user_dict = {} with open('csdn', encoding='utf-8', mo

2022-02-18 14:15:05 784

原创 Python 函数-用户登录功能

"""写一个函数完成三次登陆功能:1、用户的用户名和密码从一个文件中(hellofunc)读取2、hellofunc文件包含多个用户名,密码,用户名和密码通过|分割,每个人的用户名和密码占用文件中一行3、完成三次验证,三次验证不成功则登陆失败,返回False4、登陆成功返回Truehellofunc文件内容:albert|123456don|456jack|789"""def get_user_pwd(): """ 获取文件中的用户名和密码,并将其存为字典 .

2022-02-18 11:56:37 3198

原创 Python 装饰器

"""开放封闭原则:开放:对代码的拓展是开放的封闭:对源码的修改是封闭的装饰器: 装饰器本身就是一个函数,装饰器的本质是闭包。装饰器遵循开放封闭原则。 装饰器装饰一个函数时,在不改变原函数的源码以及调用方式的前提下,给原函数增加额外的新功能"""import time# 1、原始版装饰器def login_csdn(): time.sleep(2) print('欢迎登录CSDN社区')def time_test(func): # func

2022-02-17 23:21:48 1073

原创 Python 文件内容批量修改

"""写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作把文件中的 你是 改成 哈哈哈oldfile文件内容:你是,眉目舒展,等春照面。存远志,常读书。乐交友,惜四时,你是。山高有行路,你是,水深有渡舟。你是,和气作春妍,新年胜旧年。"""import osdef reFile(file, old_connet, new_connet): with open(file, encoding='utf-8', mode='r') as f, \

2022-02-17 16:18:48 661

原创 Python 闭包

"""闭包定义: 1. 闭包是嵌套在函数中的函数。 2. 闭包必须是内层函数对外层函数的变量(非全局变量)的引用或者改变 (对不可变数据类型进行改变需要用关键字nonlocal在内层函数声明一下,可变的数据类型则不用nonlocal声明,直接修改)。 闭包的特性: 闭包函数的空间不会随着函数的结束而消失; 被引用或者改变的变量不会消失闭包的作用: 保存局部信息不被销毁,保证数据的安全性。闭包的应用: 1、可以保存一些非全局变量但是不易被销毁、改变

2022-02-17 16:01:26 122

原创 Python 深浅拷贝

import copyname_list = ["kill", "ait", ["jack", "wang", "woh"], "hell"]# 浅拷贝name1 = name_list.copy()"""下面这三种也属于 浅拷贝name1 = copy.copy(name_list)name1 = name_list[:]name1 = list(name_list)"""print(name1)name_list[1] = "wangjjj"name_list.append

2022-02-17 12:45:26 50

原创 Python max min函数

# max求最大值 min求最小值print(max([99, 10, 1, 5, 6, 3]))"""key参数的用法:min(*args, key=None):key是可以等于函数名,注意函数名不要加括号,min会自动的将可迭代对象的每一个元素作为实参传给key的函数的形参,然后按照key的函数的返回值比较大小,最终返回的是最小的传入的实参。"""def func(x): return x[1]l = [('周一', 300), ('周二', 200), ('周三', 9

2022-02-17 12:36:13 303

原创 Python 生成器

# 生成器的本质就是迭代器"""构建生成器的方式: 1生成器函数 2生成器表达式 3Python提供的一些内置函数,返回一个生成器"""def func(): print('hello world') yield 'good'ret = func() # 生成器对象,函数不执行print(ret) # <generator object func at 0x0000027A22F72890># 只要函数中出现了yield那么它

2022-02-17 11:25:39 144

原创 Python列表推导式

# 列表推导式l1 = [i for i in range(1, 101)]print(l1)l2 = [i ** 2 for i in range(1, 11)]print(l2)l3 = [f'{i}号' for i in range(1, 11)]print(l3)l4 = [i for i in range(1, 21) if i != 18]print(l4)# 通过列表test构建一个新列表,不含4test = [[5, 6, 9, 4], [4, 7, 8, 10

2022-02-17 00:13:28 79

原创 Python 迭代器

# 获取一个对象的所有方法:dir()s = 'hello world'l = [1, 2, 3]print(dir(s))print(dir(l))# 可迭代对象:内部含有 __iter__ 方法的对象# 可迭代对象不能直接通过for循环直接取值# 现在我们能直接对可迭代对象进行for循环取值,因为for内部做了转化,先将可迭代对象转化为迭代器,再用next对其进行取值print('__iter__' in dir(s))# 迭代器:内部含有 __iter__ 方法并且含有 __n

2022-02-14 18:13:54 214

原创 Python函数名的应用

def func(): print('Hello World')# 1、函数名指向的是函数的内存地址,函数名+()就可以执行一次函数。print(func) # <function func at 0x000001E9FB2BF160># 2、函数名就是变量f1 = funcf2 = f1f1() # Hello Worldf2() # Hello World# 3、函数名可以作为容器类数据类型的元素def func1(): print(1)def

2022-02-14 14:23:39 159

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除