自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(107)
  • 收藏
  • 关注

原创 Django-图片验证码和用户注册功能实现

安装django-simple-captcha: pip install django-simple-captcha设置setting将captcha添加到APP:将生成的迁移文件应用到数据库: python manage.py migrate添加路由:新建forms.py文件创建表单模型:修改视图函数:编辑html文件:效果:设置当验证码错误时提示错误:效果:...

2022-01-14 23:28:20 1100 3

原创 基于Django3的可重用注册登录系统

新建项目:第一步:搭建框架创建一个名为login的app python manage.py startapp login修改时区和语言:启动项目:python manage.py runserver# pyhthon manage.py runserver 9999(指定端口)也可以自定义修改:成功:将迁移文件写入数据库:创建超级用户,方便我们后台管理:下一步:第二步:设计数据库模型下一步:python manage.py makemigrati

2021-12-22 23:30:49 546

原创 Django学习-快速入门并搭建一个简单的图书管理框架

1、预备知识进入开发者模式查看详细信息:HTTP请求中常见的请求方式2、快速入门在pycharm创建一个Django项目:#在终端输入代码,然后访问网址python manage.py runserver此页面即为成功:打开创建的域名给后面加上/admin可以对用户等信息进行增删改查汉化和修改时区创建应用再次访问域名/index查看:先在子应用里定义:让项目知道子应用,添加:...

2021-12-19 17:23:52 789

原创 Python-面向对象的高级特性

1、类方法和静态方法class Student: def __init__(self,name,age): self.name = name self.age = age #实例方法,python解释会对自动将对象/实例传入方法。 def get_age(self): print('self:',self) return self.age #类方法:python解释器会自动将类传入方法 @cla

2021-12-15 00:40:47 244

原创 Python-栈的封装,队列的封装,二叉树的封装

项目案例:栈的封装class Stack: """栈的封装""" def __init__(self): self.stack = [] def push(self,value): """入栈""" self.stack.append(value) print(f"入栈元素为{value}") def pop(self): """出栈""" if self.is_emp

2021-12-14 16:43:27 1077

原创 Python-面向过程编程、面向对象编程

1、面向过程编程以五子棋为例(面向过程的思路):面向对象的思路:2、面向对象编程1)简介2)对象和类#类(class)class Cat: #属性:一般是名词,比如name,age,gender..... name = 'name' kind = 'kind' #方法:一般是动词,比如create,delete,run..... def eat(self): print('cat like eating fish ....'

2021-12-14 16:42:46 1005

原创 Python的常用内置模块

1、常用内置模块1)timeimport timeprint(time.time()) #时间戳print(time.ctime()) #字符串的时间print(time.localtime()) #元组类型的时间2)datetimefrom datetime import date,datetime,timedeltaprint(date.today()) # 获取今天的时期print(datetime.now()) # 获取当前时间print(date.today()

2021-11-26 22:15:13 478

原创 Python-模块与包(通俗易懂)

1、模块1)模块的理解模块就是一个包含了Python定义和声明的".py"文件python导入模块默认是从当前目录当前文件查找模块注意:自定义的python文件的文件名一定不要和已有模块名冲突定义一个hello.py文件:我们可以在同一个目录下导入使用这个模块:执行结果如下:导入模块实际就是加载并执行一遍这个模块的内容也可以只导入一部分信息:2)模块的其他信息import sysprint(sys.path) #模块的查询路径import helloprint(di

2021-11-26 21:49:29 848

原创 Python-异常处理(通俗易懂)

1、什么是异常2、常见的异常3、异常处理机制try:尝试代码是否能运行except:如果出现问题,要做什么else:没有异常,运行finall:有没有异常,都会执行"""异常处理机制:else:没有异常时执行的内容finally:总会执行的内容"""try: a = 1 print(b)except KeyError: print('key error')except NameError: print('0-name error')ex

2021-11-26 20:26:38 474

原创 Python-内置高阶函数

1.mapmap函数可以在可迭代对象上映射函数在python3中,map会先输入一个函数参数,以及一个或多个序列参数,然后从序列中取出并行元素来调整,最后把收集并返回。map是一个值生成器,必须传入list从而一次性收集并且显示结果,返回的是迭代器。result = map(lambda x:x ** 2 , [1,2,3,4])print(list(result))result = map(lambda x,y:x+y,[1,2,3],[4,5,6])print(list(result))

2021-11-26 18:02:51 296

原创 Python-闭包和装饰器

补充:时间戳import timestart_time = time.time() #time.time()时间戳:从1970年1.1到现在的秒数time.sleep(2) #休眠两秒end_time = time.time()print(end_time - start_time) #结束时间减去开始时间等于运行时间执行结果如下:1. 闭包1)函数里嵌套函数def timeit(): def wrapper(): print('wrapper')

2021-11-25 22:02:49 309

原创 Python-生成式和生成器(通俗易懂)

1.生成式1)列表生成式生成100个随机验证码:通过列表生成式简化:import randomimport stringcodes = [''.join(random.sample(string.ascii_letters,4)) for i in range(100)]print(codes)执行结果如下:找出1-100之间可以被3整除的数:nums = []for num in range(1,101): if num % 3 == 0: nums.

2021-11-19 23:52:14 976

原创 Python-词频统计练习(Counter)

统计文件中出现的每个单词的次数,找出出现次数最多的5个单词# 1.加载文件中所有的单词with open('venv/song.txt',mode='r') as f: word = f.read()words = word.split(' ')# 2.统计d = {}for i in words: if i in d: d[i] = d[i] + 1 else: d[i] = 1print(d)找出现最多的单词数可用counter

2021-11-19 20:36:50 964

原创 Python-存储为execl文件

1、安装pandas在终端输入命令:pip install pandas -i https://pypi.douban.com/simpleimport pandashosts = [ {'host':'1.1.1.1','hostname':'test1','idc':'ali'}, {'host':'1.1.1.2','hostname':'test2','idc':'huawei'}, {'host':'1.1.1.3','hostname':'test3','id

2021-11-18 18:55:02 232

原创 Python- json模块(通俗易懂)

简介这些特性让JSON成为了理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。python数据类型和json数据格式相互转换规则1、将python对象编码成json字符串import jsonusers = {'name':'westos','age':18,'city':'西安'}json_str = json.dumps(users)##with open:打开文件,没有就创建,写入内容,写完自动清理关闭with open('venv/he

2021-11-18 17:44:52 371

原创 Python-os模块(通俗易懂)

简介os,语义为操作系统,处理操作系统相关的功能,可跨平台。比如显示当前目录下所有文件/删除某个文件/获取文件大小等等。os模块的操作都很简单,建议大家动手操作一下,效果会更好。获取操作系统的类型和主机信息import osimport platform# os.name获取操作系统的类型:# windows:nt linux:posixprint(os.name)# os.uname() 获取主机信息,windows系统使用platform模块,linux系统使用os模块# try

2021-11-17 22:50:33 4585 2

原创 python-文件的打开,读写和关闭(open函数,with语句)

文件的基本操作1、打开和读写 mode: r:只能读文件 w:只能写入(清空文件内容) a+:读写(文件最后追加写入内容)追加内容:执行以下代码:f = open('hello.txt',mode='a') ##打开文件f.write('java\n') ##文件读写操作f.close() ##关闭文件追加内容成功2、关闭文件with语句with语句在执行完后会自动关闭文件:此代码输出为空:with open('hello.tx

2021-11-17 21:21:19 4823

原创 Python-定义和调用函数,变量作用域,参数,匿名函数,递归函数

简介在编程中,我们经常需要进行相同或者类似的操作,这些操作是由一段代码完成的,而函数的出现,可以帮助我们避免重复编写这段代码。函数的作用就是把相对独立的某个功能抽象出来,使之成为一个独立的实体。Python在世界被广泛使用的一个原因,就是Python中有大量的内置函数,这些内置函数可以帮助我们快速的构建各种类型的网站。常用的内置函数:max,min,sum,divmod等等;函数必须要有输入和输出。1、如何定义和调用函数定义一个函数,只需要以def开头即可。函数名(get_max):和Pyt

2021-11-16 23:08:23 463

原创 Python重要数据结构之字典(通俗易懂)

1. 字典简介字典是另一种可变容器模型,且可存储任意类型对象。键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。·字典类型就像它的名字一样,可以像字典一样去查找。·字典的元素是成对出现的,每个元素都是由“:”和键值对(“:”左边的称为键或者key,“:”右边的称为值或·者value)构成。·元素和元素之间用","隔开,整个字典用“{ }”包围。·字典的值必须是唯一的不重复的,如果是空字典,直接用“{}”表示。执行结果如下:2. 字典的特性不支持+,*,index,s

2021-11-15 20:23:22 848

原创 Python重要数据结构之集合(通俗易懂)

1.集合Python中有一种内置类型叫做集合,它是一个非常有用的数据类型,它与列表的行为类似,唯一区别在于集合(set)是一个无序的不重复的元素序列。类似:1,2,3,4,1,2,3 = 1,2,3,4(1)集合的创建: 1). 使用大括号{ }或者set()函数创建集合; 2). 注意: **创建一个空集合必须使用set()而不是{},{ }是用来创建一个空字典。**(2)集合的特性不支持+,*,index,slice,因为集合是无序且不重复的。支持in和not in

2021-11-13 18:34:51 1289

原创 列表:深拷贝和浅拷贝的区别

简述1.浅拷贝可以使用列表自带的copy()函数,或者使用类似于a = b[:]的方法。2.深拷贝只能使用python的copy模块的deepcopy(),使用之前要导入(from copy import deepcopy)。区别列表中的引用:一个列表里存储着另一个列表,存储的这个列表就是原来的列表的引用1. 如果进行拷贝的列表里只有值,没有引用,则浅拷贝和深拷贝是一样的。两者都是将原来的列表进行复制,产生一个新列表,如果对新列表进行修改,并不会影响原来的列表,两者是完全分离开的,内存地址也不

2021-11-11 00:18:04 1645

原创 Python数据结构列表练习题:构建云主机管理系统

题目:构建一个云主机管理系统构建一个云主机管理系统,要求如下:1.可以持续添加云主机(ip,hostname,idc)2.可以根据ip搜索云主机3.可以根据主机名删除云主机4.可以查看所有云主机信息,云主机个数5.查看完成之后可以退出系统代码如下: menu = """ ------------------------ 云主机管理系统 ------------------------ 功能:

2021-11-01 02:26:43 89

原创 Python重要数据结构之元组,命名元组(通俗易懂)

元组元组和列表十分相似,大部分方法都通用,但是元组与列表的最大区别是列表可以修改,读取,删除,而元组创建之后则不能修改,不可以删除单个元素,但是可以删除整个元组。1. 定义元组元组在定义上和列表类似,定义元组时只需要用"(" 和 ")"把元素括起来就可以。执行结果如下:但是要注意,如果元组只有一个元素,则这个元素后面必须有“,”,否则元素就还是原来的类型。例如:执行结果如下:2. 删除元组由于元组不能修改,所以元组也不能单独删除部分元素,要删除只能删除整个元组。例如:结果如下

2021-10-30 18:39:13 589

原创 Python重要数据结构之列表(通俗易懂)

列表1. 列表更新列表的功能十分强大,它是Python的重要数据结构之一。列表可以通过索引获得其中的一个元素,也可以通过索引更新其中的元素。执行结果如下:从结果可以看到,一个列表中可以存储不同的数据类型,并且修改的新元素也不需要和原来的元素类型一致但是要注意,更新列表的索引必须是已经存在的索引,不可以对超过列表长度的索引进行更新。2. 增加单个元素列表不能通过索引来添加新的元素,只能修改现有的元素。如果要添加新元素,可以使用append的方法来给列表追加新元素。执行结果如下:从

2021-10-30 00:17:18 380

原创 Python拓展练习:忽略大小写和特殊符号以及空格的回文字符串

from string import punctuation ##导入python string类自带的标点符号eg = input("请输入:")s = eg.replace(" ","")a = s.lower()dicts={i:'' for i in punctuation}b=str.maketrans(dicts) #用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标c=a.translate(b

2021-10-09 02:47:53 1023

原创 Python:编写一个函数来验证输入的字符串是否为有效的IPv4?

1.IPv4地址由十进制数和点来表示,每个地址包含4个十进制数,范围为0-255,用’.'来分隔。2.IPv4地址内的数字不会以0开头,比如172.25.10.01是不合法的。ip=str(input("请输入一个有效的IP地址:"))ip_list=ip.split('.')if ip.count('.') == 3 and len(ip_list) == 4: ####是否由三个小数点和四个元素组成 for i in range(4): ###依次的含义:四个元素是否为数字

2021-10-09 01:47:23 1348

原创 Python-(7)字符串的数据清洗,位置调整,搜索和统计

1.字符串的数据清洗1.strip 删除字符串开头和末尾的空格(指广义的空格:\n, \t, ' ')2.lstrip 删除字符串开头的空格(指广义的空格:\n, \t, ' ')3.rstrip 删除字符串末尾的空格(指广义的空格:\n, \t, ' ')4.replace 字符串替换,删除中间的空格,将空格替换为空例子:2.字符串位置调整center:居中ljust:向左rjust:向右3.字符串的搜索和统计1.find(str,beg,end) 检测str是否包含在s

2021-10-08 00:42:21 524

原创 Python扩展-正反向索引和回文字符串

正反向索引s = 'hello westos's[:n]:打印前n个字符s[n:]:除了前n个元素,其他元素保留 s[:]:从头开始访问一直到字符串结束的位置s[:-n]:除了倒数后n个元素,其他元素保留s[-n:]:打印倒数后n个字符s[::-1]:倒序输出回文字符串回文字符串指从前和从后读一样,类似与"aba"练习写一个判断是否为回文字符串的程序eg = str(input("请输入:"))if eg[:] == eg[::-1]: print(f"{eg

2021-10-07 23:52:08 370

原创 python-(6)常用的字符判断和转换以及开头结尾匹配

1. 字符判断1.判断类型:是否为字符或者数字: isalnum 是否为字母:isalpha 是否为数字:isdigit是否为小写字母:islower 是否为空格:isspace 是否为标题:istitle是否为大写字母:isupper 是否为十进制字符:isdecimal例子:第一个判断有空格,并不算是字符或者数字第二个两个字符首字母都是大写,所以为标题2. 形式转换转换为小写字母:lower 转换为大写字母:upper 转换为标题:title大小写反转

2021-10-07 23:24:50 316

原创 Python练习-九九乘法表和防止暴力破解的登录系统

练习:使用嵌套循环输出九九乘法表输出九九乘法表代码:for i in range(1,10): for j in range(1,i+1): print(f"{j}*{i}={i*j}", end=' ') print('\n')使用while循环的for循环用户账号为"root" 密码为 “westos”登录失败三次就无法再次登录失败,登录成功显示成功,登录失败显示失败继续登录while循环count = 0while True: count

2021-10-07 00:04:34 137

原创 Python-(5)分支与循环

1 if-elseif 要判断的条件: 条件成立时,要做的事else: 条件为假时,要所的事例子:age = int(input("年龄:")) print("成年" if age>=18 else "未成年")如果age大于等于18判断为成年,小于18判断为未成年2 whilewhile 条件(): 条件满足时,做的事情1 条件满足时,做的事情2例子:count = 0 while count <= 100: print(count) co

2021-10-06 22:10:24 257

原创 Python-(4) 常用操作符

常用操作符算术操作符:【+】【-】【*】【/】【%】【**】【//】逻辑(布尔)操作符 :【and】 【or】【not】比较(关系)操作符:【>】【<】【<=】【>=】【==】【!=】赋值运算符:【=】1 算术操作符加减乘除从上倒下依次为:整除,取余,次方优先级:多个运算在一起先乘除后加减2 逻辑操作符【and】 :两侧条件都为真,结果为真【or】:左侧或右侧为真时,结果为真【not】:一元操作符,取它后面操作数相反的布尔值3 比较操作符【=】是指

2021-09-25 18:51:45 238

原创 Python-(3)数据类型,输入输出和变量

1 数据类型python中常用的数据类型:整型(int):比如1,2,3,-4,0 在python3中不区分长短整型字符型:(str):比如 张三,李四,westos浮点型:(float):比如1.22223 可以理解为小数布尔类型:(bool):True 和 falseList(列表):[],值可变Tuple(元组):(),值不可变2 输入输出(1) 简单的输入输出input () 输入print () 输出(2) 强制转换数据类型我们可以将一个输入强制转换为其他的数据类

2021-09-25 18:20:05 512

原创 Python-(2) Pycharm的安装

官网:https://www.jetbrains.com/pycharm/(1)下载好安装包:(2)

2021-09-20 12:49:01 62

原创 Python(1)-linux系统下python的安装配置

目前python2官方已经不再维护,所以请使用python3.x的任意版本均可(python3和2的有些代码不一样)。官网: https://www.python.org/(1)我已经准备好安装包,解压(2)安装编译中需要的依赖性yum install gcc zlib zlib-devel openssl-devel readline readline-devel -y(3)进入解压后的安装包进行编译./configure --prefix=/usr/local/python --with-

2021-09-19 17:59:49 53

原创 TCP三次握手和四次挥手解析

三次握手(建立连接)(1)序号:seq序号,占32位,用来标识从TCP客户端向目的端发送的字节流,发起方发送数据时对此进行标记。(2)确认序号:ack序号,占32位,这个序号和发起的序号有关,在接受到信号后,将ACK置为1,才可以产生ack,且当ACK为1时,ack确认序号才有效,ack=seq+1。(3)标志位:SYN:发起一个新连接。ACK:确认序号有效。FIN: 释放一个连接。PSH:接受方应该尽快将这个报文交给应用层。RST:重置连接。URG:紧急指针有效。具体过程如下:SYN

2021-09-13 19:16:42 1198

原创 kubernetes-高可用集群部署

1. 高可用集群简介在之前我们做的k8s实验中,都只使用了一个master节点进行调度,所以当这个节点down掉的时候集群将无法进行部署管理工作。而使用k8s高可用集群设置多个master节点来实现高可用,haproxy配置三个master节点实现负载均衡,并且实现高可用。实验准备如下:准备五台虚拟机(server1-5)(172.25.10.1-5)其中server1是harbor仓库server2,server3,server4是集群的master端server2作haproxy负载均衡

2021-09-09 01:24:59 327

原创 运维自动化工具ansible(5)Ansible中的变量以及加密

提前下载安装shc详细步骤:https://blog.csdn.net/Ma_JunSSR/article/details/1198966951. 变量命名只能包含数字,下划线,字母只能用下划线或者字母开头测试一下:首先设置一个变量westos@1看看执行playbook,报错了改@为下划线_执行成功2. 变量级别全局: 从命令行或者配置文件中设定的play: 在play和相关结构中设定的主机: 由清单,事实收集或者注册的任务变量优先级设定:狭窄范围有限与广域范围3. 变

2021-08-25 22:32:01 134

原创 linux上shc下载和安装

安装好wget,有网直接下载即可 wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz下载后解压tar zxf shc-3.8.7.tgz安装gccyum install gcc -y进入目录gcc shc-3.8.7.c -o shc将命令移动到根bin下mv shc /bin安装结束...

2021-08-24 19:11:03 2399

原创 运维自动化工具ansible(4)playbook的简介,构成,编写,vim设定技巧以及常用参数

1.playbook的功能playbook是由一个或者多个play组成的列表playbook文件使用yaml来写的2.YAMLyaml是一种表达资料序列的格式,类似于xml特点:可读性好和脚本语言交互性好易于实现适用程序执行流梳理方式可扩展性强语法简介:文件中用[ - - - ]开始,[…]结尾严格缩进 大小写敏感key/value可以多行书写也可以一行书写,一行书写用,隔开一个play需要包括name和tasksname是描述 tasks是动作扩展名称是yml或者yaml

2021-08-24 18:39:59 480

空空如也

空空如也

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

TA关注的人

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