![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
每日10行代码
天天卡丁
这个作者很懒,什么都没留下…
展开
-
每日10行代码182:用pyqt5实现在helloworld
学习背景:有点想用python写一个番茄计时法的程序,所以先学习一下怎么做一个界面。经过挑选,决定用pyqt5来做。其实这段简单的代码还是有值得一看的地方的,有一些地方是需要进一步深入研究的。,就不是一个很好懂的语句。以后有空再详细研究下。原创 2023-08-29 22:51:49 · 209 阅读 · 0 评论 -
每日10行代码181:用chatgpt实现基于flask的表单收集信息存入oracle的小应用
总之,chatgpt的表现超出我的预料,尤其是写代码方面的能力,看来以后他确实能大大提高程序员的工作效率,也会抢了一些程序员的饭碗。以后学编程的方式估计也要变化,以后估计是先学了基本概念后,就让chatgpt设计程序,自己照着来,最后再调试,有不懂的问chatgpt,这种学习效率会比现在高很多。背景:最近学习flask,于是想着用chatgpt试一下编程效果,结果试了下,大大出乎意料,看来以后学编程真的要换方法了,要从以前面向搜索的编程换成以后面向chatgpt的编程了。主程序app1.py。原创 2023-04-12 01:03:08 · 240 阅读 · 1 评论 -
每日10行代码180:flask中用escape来防止html逃逸,避免xss攻击
其实我最开始的代码就是hello_world3,但是输了后发现报错,原因是这一串js代码里有斜线,而flask把斜线当成路由的分隔标志。正确的应该是像hello_world1中那样。继续学习flask,今天学到了:https://flask.palletsprojects.com/en/2.2.x/quickstart/#html-escaping。因为flask的路由函数接收到内容后会默认把他当成html来解析,这样就有可能产生安全问题。这节讲了一escape这个函数,我写了一小段代码来测试下。原创 2023-03-26 16:11:26 · 869 阅读 · 0 评论 -
每日10行代码179:用flask写hello world-2
前段时间跟着w3cschool学习flask,结果学到后面了(主要是flask wtf和flask_sqlalchemy那块),各种报错,解决了一个错误又会产生另一个错误,估计是因为flask版本的原因,也不知道w3cschool用的是啥版本,看来跟着那个学是学不下去了。实际上,官网这个app是不能直接运行的,直接python hello.py 程序会运行,但不会有任何显示,也不会建立web服务器,因为这段代码里只定义了一个程序,但没有语句要让这个程序跑起来,也就是没有执行的语句。原创 2023-03-25 17:09:31 · 80 阅读 · 0 评论 -
每日10行代码178:flask表单示例
4. vscode真的挺好用,好多东西就自然带上了,不用再配置,比如写html时的emmet缩写,如果展开后的代码中有几个地方需要输入,那么可以用tab跳到下一个需要输入的地方,这种细节的东西都自带了,另外如果打开的文件夹是git目录,那么还可以直接在vscode里提交推送同步,真是智能。5. kettle的作业可以通过bat文件调用,而bat文件又可以添加到任务计划,这样就可以通过任务计划执行作业了,这样一来的好处就是不用一直开着kettle了。曾经我以为python装的是32位的才会这样。原创 2023-03-06 16:47:39 · 192 阅读 · 0 评论 -
每日10行代码176:用flask写hello world
有段时间没有坚持每日写代码,坚持更新博客了,一方面有一些工作太忙的客观原因,还有一个原因就是总想在博客上发一点有新意的代码,不想是网上随手一搜乱大街的东西。但是这种想法其实是不对了,他背离了我的初衷,我写这个的主要目的是督促自己学习,并不太在乎阅读量,不能让阅读量成为一个包袱。随便写,就按以前的规则 ,只要有几行代码就可以了,不在乎阅读量,不在乎csdn给我改进质量的建议。参考:https://blog.csdn.net/weixin_44981444/article/details/108700242。原创 2023-03-04 15:10:01 · 91 阅读 · 0 评论 -
每日10行代码175:按条件取出且仅取出一条记录
有一个国王,每年要从他所管辖的n个城市的其中一个城市(或区域)找一个王妃,注意是必须找一个且只能找一个王妃。也就是说国王可以按一定的条件找王妃,但如果条件太高了,没有达到标准的,就需要降低标准。如果符合条件的太多了,就需要增高标准,直到符合条件的只有一个人。所有的必须选择且只能选择一个的场景都有这样的需求。不同的是,我提供的例子中,先是选择了一个范围,在不同的范围内,各种情况都可能发生。下面实际解释一下,以上所有条件都不是必须满足的,都是可选的,重要性是按顺序排的。一个人想从众多同类型的产品中选购一个。..原创 2022-08-06 18:04:21 · 79 阅读 · 0 评论 -
每日10行代码174:ctfshow-crypto-easyrsa2 题目解答wp
就比如现实中,得到了一些信息,大家来解密,肯定也没有许多的提示信息,解密很重要的方法就是不断的尝试,去猜,所以ctf里的密码题目也是这样,没有那么多原因。知道把两个n去求下公约数,肯定是最早出这种类型题目的人想出来的,或者最早加密的人为了偷懒,更换模n时,没有重新去找p和q,而是沿用了以前的p或q。那么,再看看题目,给了两组n,e,c那有没有可能两个n有关系呢,可以试下他们有没有公约数,用libnum.gcd求了一下,发现两者还真有公约数,那就相当于对n做了因素分解。...原创 2022-07-21 18:40:56 · 288 阅读 · 0 评论 -
每日10行代码173:测试下yafu的质因数分解能力
从这个输出也可以看出,p到q间间隔了100个素数,而差值为72506,平均每两个素数之间的差是725,72506相对于这个大素数来说还是很小,以致于他们之间比值还是1.0。最后,把p*q的值放到yafu里分解,发现还是可以分解的,只是时间要的很长,在我的电脑上大概花了有一个小时的时间才分解出来。在做rsa题目时,经常会遇到因素分解的问题,而因素分解里有一个很出名的工具叫yafu.当p、q的取值差异过大或过于相近的时候,使用yafu可以快速的把n值分解出p、q值。综上经不严谨的推断,.........原创 2022-07-20 13:57:15 · 1571 阅读 · 1 评论 -
每日10行代码172:今天新学到的奇怪知识——bit_length(),^=,<<=,>>=
python里面要判断一个十进制数的位数,是没有专门的函数的,需要转换成二进制数来判断,但是判断一个二进制数的位数却有一个专门的函数,那就是bit_length(),=也是同样的。原创 2022-07-18 18:16:59 · 91 阅读 · 0 评论 -
每日10行代码171:rsa问题,转换为用python解大整数的一元二次方程
其中t和m均为一个2000以内的较小值,所以我可以用穷举的方法,逐一产生方程并求解,求得的解x即为第一个素数,p,q都是基于x生成的。原创 2022-07-16 23:04:00 · 235 阅读 · 0 评论 -
每日10行代码168:认识np.array对象——np.array数组创建
np.array可以从python列表创建数组:创建整型数组:In [6]: np.array([1,4,2,5,3])Out[6]: array([1, 4, 2, 5, 3])跟python列表 不同的时,Nunpy要求数组必须包含同一类型的数据。如果类型不匹配,Numpy将会隐式的转换。In [7]: np.array([3.14,4,2,3])Out[7]: array([3.14, 4. , 2. , 3. ])上面的整型被转换成了浮点型。如果希望明确设置数组的数据类型,原创 2022-05-12 15:02:30 · 2251 阅读 · 2 评论 -
每日10行代码167:认识pandas中的DataFrame 数据结构4
接上一章:也可以用包含字典的嵌套字典来创建DataFrameIn [5]: pop = {'Nevada': {2001:2.4, 2002: 2.9},'Ohio': {2000:1.5, 2001:1.7, 2002:33.6}}In [6]: frame3 = pd.DataFrame(pop)In [7]: frame3Out[7]: Nevada Ohio2001 2.4 1.72002 2.9 33.62000 NaN 1.5原创 2022-05-09 19:39:21 · 588 阅读 · 0 评论 -
每日10行代码166:认识pandas中的DataFrame 数据结构3
接上一章可以直接对列进行赋值,比如赋一个常量:In [97]: frame2['dept']Out[97]:one NaNtwo NaNthree NaNfour NaNfive NaNsix NaNName: dept, dtype: objectIn [98]: frame2['dept']=16.5In [99]: frame2Out[99]: year state pop deptone原创 2022-05-08 07:34:51 · 636 阅读 · 0 评论 -
每日10行代码165:认识pandas中的DataFrame 数据结构2——DateFrame中的定位
接上一章能创建DateFrame后,自然会关注怎么从DateFrame中取到数据。首先可以用字典的方式:In [73]: frame2Out[73]: year state pop deptone 2000 Ohio 1.5 NaNtwo 2001 Ohio 1.7 NaNthree 2002 Ohio 3.6 NaNfour 2001 Nevada 2.4 NaNfive 2002 Nevada 2.9 N原创 2022-05-04 18:12:28 · 872 阅读 · 0 评论 -
每日10行代码164:认识pandas中的DataFrame 数据结构1——创建DataFrame
DataFrame可以说是pandas的核心,如果熟悉DataFrame对象的各种操作,可以说已经学会了pandas.DataFrame表示的是矩阵的数据表,有点像数据库中的表,它包含已排序的列集合,每一列可以是不同的数据类型。DataFrame既有行索引也有列索引 ,DataFrame一般是二维的,但是可以通过分层索引来展现更高维度的数据。有多种方式可以构建DataFrame,其中最常用的方式是利用包含等长度列表或 Numpy数组的字典来形成DataFrame:In [66]: data = {'s原创 2022-05-02 16:25:20 · 884 阅读 · 0 评论 -
每日10行代码163:认识pandas中的series数据结构3
接上一章Series中有一种自动对齐索引的特性,这也是一种很有用的特性。In [32]: obj3Out[32]:Ohio 35000Texas 71000Oregon 160000Utah 5000dtype: int64In [33]: obj4Out[33]:California NaNOhio 35000.0Oregon 160000.0Texas 71000.原创 2022-05-02 15:45:02 · 1932 阅读 · 0 评论 -
每日10行代码162:认识pandas中的series数据结构2
接上一章在series中可以实现像Numpy的函数或Numpy风格的操作,比如:In [19]: obj2>0Out[19]:d Trueb Truea Falsec Truedtype: boolIn [20]: obj2[obj2>0]Out[20]:d 4b 7c 3dtype: int64把Series直接与常数比较 ,用布尔值数组进行过滤In [21]: obj2*2Out[21]:d 8原创 2022-05-02 15:22:33 · 695 阅读 · 0 评论 -
每日10行代码161:认识pandas中的series数据结构1
最近在做数据分析,所以用了一些pandas,但是在用的过程中,深感基础不扎实,不能达到灵活运用的程度,于是想着深入学一下pandas. 那么就先从series开始。Series是pandas里最基础的一个数据结构,虽然DateFrame常常用得更多,但series仍然是pandas里基础的基础,DateFrame中的列也都是一个series.series是一种一维的数组型对象,有点类似于python原生的列表,但考虑到他也有索引,所以跟字典也有一些类似 。In [2]: import pandas a原创 2022-05-01 07:45:39 · 793 阅读 · 0 评论 -
每日10行代码160:对比sql学习pandas-1
sql是我数据分析时经常用到的工具,但是进入更深层的数据分析时,需要用到python,这时就不得不跟pandas打交道。在用pandas时会不自觉的想到怎么用pandas实现一些常用的sql语句功能。示例:假如我有一张公司开具的发票明细数据表fp, pandas中的dataframe对象为df对比一sql实现:select * from fppandas实现:df但是这样数据可能会显示不全,这一点跟sql有所区别,pl/sql里默认是显示所有列和部分行,如果想查看所有行列,可能进行如下操作原创 2022-04-25 21:34:14 · 790 阅读 · 0 评论 -
每日10行代码159:批量修改多个excel文件的列名
背景:接上一章,进一步增强功能,实现批量处理的功能。import openpyxlimport os # 定义一个字典my_dict = {'dth1':'代替换1' ,'dth2':'代替换2' ,'dth3':'代替换3'}def change_column_name(path,my_dict): wb = openpyxl.load_workbook(path) ws = wb.active for c in ws[1]: if c.value.strip(原创 2022-03-27 23:06:39 · 828 阅读 · 0 评论 -
每日10行代码158:用python替换excel中某些文本
业务背景:工作上经常从数据库中导出数据,但是导出的数据列名都是数据库中的字段名,不是中文名称,但是给其他非技术人员用的话,需要把字段名改成中文名,这时就需要一个个的改,当列比较多或者导出的excel比较多时。手动改名就变得比较麻烦。所以我想用python来实现自动修改列名的功能。import openpyxl# 定义一个字典my_dict = {'sfzh':'身份证号' ,'qymc':'企业名称' ,'shxydm':'社会信用代码'}path = r'C:\Users\Administ原创 2022-03-26 23:26:21 · 627 阅读 · 0 评论 -
每日10行代码157:把文件名写入到文件末尾
接前面一节的内容,如果是加密文件的话,可能会考虑连文件名一起加密,但为了加密后能恢复,我就需要氢原始文件名藏在一个地方,所以就有了这个想法,把文件名写入文件末尾。from os.path import basenamepath=r'F:\电影\阳光电影www.ygdy8.com.诛仙Ⅰ.HD.1080p.国语中字.mkv'filename = basename(path)print(filename)filename_bytes = filename.encode('utf-8')prefix原创 2021-12-23 23:04:27 · 196 阅读 · 0 评论 -
每日10行代码156:Python实现简单的文件加密解密
我常用的文件加密解密的工具是宏杰加密,但是前两天打开后发现要强制升级,升级后软件变成vip才能使用,并且不能降级。有一天,我突然想起来自己是不是可以用Python写一个加密的工具。于是就动手开是写了。def encrypt(filepath): f = open(filepath,'rb+') f.seek(0,0) content = f.read(200) print(content) f.seek(0,2) f.write(content) f原创 2021-12-22 16:12:09 · 3619 阅读 · 5 评论 -
每日10行代码155:python中*(星号)用途
星号在python中除了表示乘法的运算符外,还有一种重要的用法:当我们使用函数时,需要传入不定个数的位置参数时,就可以使用*号表示,即*args,以元组形式传入;上面那个是书面解释,不太好懂,看下面的代码:a=[1,2,3]print(a)print(1,2,3)>>>[1, 2, 3]1 2 3print()函数是接受多个参数的,那假如要接收10000个参数呢,总不能像上面第3行的代码一样,一个个写到括号里,但也不能像第2行代码那样,直接把数组写入括号里面,因为原创 2021-09-25 09:26:40 · 639 阅读 · 0 评论 -
每日10行代码154:sql实现最大连续增长(减少,翻倍,为0)的月数(年数,天数、季度数,期数)
一、业务背景实际工作中,经常会遇到这种需求:查询连续三个月收入下滑的门店,查询连续6个月销售增长的商品,查询连续增长时间最长的商品,查询连续销售额增长时间最长的企业和月份,查询连续多少个月业绩为0的员工。凡是此类问题,归纳起来都是连续XXX时间满足XXXX条件。细分一下的话,XXX条件有的简单一点,有的复杂一点,比如业绩为0的员工,这个条件就很简单,直接在where 销售额=0就可以了,连续增长就稍微麻烦点,需要跟上一期的销售额进行比较。不过总之解决这类问题的基本原理是一样的。二、解决思路一、查询出原创 2021-09-19 16:03:07 · 1385 阅读 · 0 评论 -
每日10行代码152: excel_to_oracle项目已经完成
截止到今天,我的个人项目 : excel_to_oracle终于完成。项目具体情况见我上一篇博客。我在年初的时候就对这个项目有所设想,但是由于没时间,再加上Python技术一般,不敢开始写这种稍微复杂点的项目。等到4月的时候,先写出了一个关于excel工作表的类: ExcelSheet, 再加上以前也写过批量插入数据库的语句,慢慢的感觉自己已经有能力来完成这个项目了。中间因为其他事耽误了一段时间,这两天有空了,就把这个项目继续完成了。这个项目是我完成的第一个稍微复杂点的项目,整个项目一共404行代码,原创 2021-07-07 16:43:15 · 69 阅读 · 0 评论 -
每日10行代码151:用python把excel自动导入到oracle
学习到现在,已经需要开始着手写一些小的项目了,但是项目就不适合在博客里每篇文章贴一小段代码。所以,我把项目放到了gitee上,以后关于项目的文章只写项目思路及关键代码。项目名称:excel_to_oracle项目地址:https://gitee.com/zjx0711/excel_to_oracle项目目的:用python实现全自动的把excel格式的数据导入到oracle, 要根据excel的数据自动创建建表语句,并自动把数据插入到数据库,最后把插入错误的数据记录下来。项目背景:把excel导入到原创 2021-06-27 17:48:25 · 424 阅读 · 0 评论 -
每日10行代码150:用python实现定时不重复的截图
接上一章,为解决截图过多的问题,修改了下代码 :import pyautoguifrom datetime import datetimeimport timeimg_first = None while True: time.sleep(2) img_next = pyautogui.screenshot(region=[1000,500,400,400]) # x,y,w,h if img_first == img_next: pass原创 2021-05-14 11:35:40 · 195 阅读 · 0 评论 -
每日10行代码149:用python实现定时截图
背景:工作中遇到一个实际问题,有一个系统 在完成一个需要很长时间的操作时,系统没做日志,也不提示啥时完成的,只能靠人工去看,这时我就想用软件截图来监测一下。import pyautoguifrom datetime import datetimeimport timewhile True: img = pyautogui.screenshot(region=[1000,500,400,400]) # x,y,w,h print(type(img)) capture_原创 2021-05-12 17:05:16 · 329 阅读 · 0 评论 -
每日10行代码148:学习django-修复bug,添加更多测试
前面那个bug是:当 pub_date 为未来某天时, Question.was_published_recently() 应该返回 False,实际却返回True。所以可以这样修改下代码 :def was_published_recently(self): now = timezone.now() return now - datetime.timedelta(days=1) <= self.pub_date <= now修改后重新运行测试:py manage.py原创 2021-05-09 17:03:56 · 140 阅读 · 0 评论 -
每日10行代码147:学习django-创建测试
接上一章,我们创建一个关于“最近发布”的bug修改polls 应用里的 tests.py 文件:import datetimefrom django.test import TestCasefrom django.utils import timezonefrom .models import Questionclass QuestionModelTests(TestCase): def test_was_published_recently_with_future_quest原创 2021-05-09 16:48:20 · 88 阅读 · 0 评论 -
每日10行代码146:用类的方式封装下excel的sheet,获取实际的最大行数及最大列数
今天把前面的代码重构了下,用类的方式来实现下:import openpyxlclass ExcelSheet(object): """comment""" def __init__(self,excel_path, sheet_index=-1): self.wb = openpyxl.load_workbook(excel_path) if sheet_index == -1: self.ws = self.wb.active原创 2021-04-29 17:35:22 · 287 阅读 · 3 评论 -
每日10行代码145:学习django-复现一个最近发布的bug
在开始写测试前要先搞清楚一个问题:什么时候写测试?有一种“测试驱动”的开发原则,这种原则要求先写测试,再写实际代码。这种方法听起来有些反直觉,但实际上有些道理,比如我们做一个工具,我们可能会先对这个工具的作用有个明确的预期,然后再开始做工具。再具体点的例子就是说,假如我要造一艘船,我会首先找一条适合我这个船的河,再到河边弄个小船坞,准备船一造好就先在河里测试一下,如果有不行的地方再来改造下。这里的船坞和小河就是测试环境,开着刚造好的小船去河上跑几趟就是测试代码。至于人工测试就相当于我每次对船有所调整,就原创 2021-04-24 10:25:03 · 71 阅读 · 0 评论 -
每日10行代码144:学习django-为什么要写测试?
这节开始学习django的自动化测试:什么是自动化测试?自动化测试就是用代码来测试软件是否正常运行。为什么需要写测试?1. 节约时间如果是简单的只测试一个小的功能的话,一般直接手动测试更快,但要是测试一个复杂的系统的话,为了全面的测试,还是编写自动化测试代码更节省时间。因为本质上测试就是做一系列重复的验证操作,而在做重复的工作上,没有比写程序更合适的了。2. 测试不仅能发现错误,更能预防错误写测试的代码,会促进你对整个程序的理解(因为提前思考了程序易出错的地方),从而减少错误的发生。3. 自原创 2021-04-24 09:54:07 · 63 阅读 · 0 评论 -
每日10行代码143:学习django-用通用视图改写代码
web程序常有的一个功能就是列表展示数据库里的数据,比如前面的章节里,展示所有问题,展示所有投票情况等;基于这种原因,django有自己的通用视图。下面把投票应用转成通用视图,需要做以下几件事:转换 URLconf。删除一些旧的、不再需要的视图。基于 Django 的通用视图引入新的视图。首先修改polls/urls.py文件:urlpatterns = [ # ex:/polls/ path('', views.index, name='index'), # ex:原创 2021-04-14 08:58:59 · 84 阅读 · 1 评论 -
单人开发使用git需要记住的最核心命令
背景:大家都知道,做稍微大点的项目一般都要用到版本控制的,而版本控制最强的工具莫过于git。我早就知道了git,以前也用过一段时间,不过体验不是很好,因为那时总是出一些莫名其妙的错误,导致我现在使用git还有点发怵。最近因为自己准备做一个稍大点的项目,不得不用到版本控制。所以就又拿起了git,写这篇文章把最近使用的经验记录下。**一、 如果初学git,一定要使用gitee.**我这次本来是想用github的,但是没想到按照别人的教程总是出现错误,在网上找了好久,也没找到解决办法。最后发现,原来是网络的原创 2021-04-10 21:43:56 · 338 阅读 · 0 评论 -
每日10行代码142:学习django-编写一个简单的表单
修改 polls/detail.html文件, 添加一个 <form>元素:<h1>{{ question.question_text }}</h1>{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}<form action="{% url 'polls:vote' question.id %}" metho原创 2021-04-10 14:29:53 · 113 阅读 · 0 评论 -
每日10行代码141:学习django-为 URL 名称添加命名空间
上一章中,有一个url链接是这样的:<li><a href="{% url 'detail' question.id %}">{{ question.question_text }}</a></li>里面用了url别名:detail,假如别的应用中也有个url的别名是detail,而我又想访问需要怎么办呢?这时就需要为URL添加命名空间。在 polls/urls.py 文件中稍作修改,加上 app_name 设置命名空间:from django.ur原创 2021-04-08 21:53:20 · 173 阅读 · 0 评论 -
每日10行代码140:学习django-学习模板
接上一章,把detail.html的内容完善下:一、使用模板系统<h1>{{ question.question_text }}</h1><ul>{% for choice in question.choice_set.all %} <li>{{ choice.choice_text }}</li>{% endfor %}</ul>二、去除模板中的硬编码url在polls/index.html 里编写投票链接时,链接原创 2021-04-07 21:34:29 · 99 阅读 · 0 评论