![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python自学
三盏灯亮一盏
这个作者很懒,什么都没留下…
展开
-
python中else的三种用法
python中else可以在判断语句、循环语句和异常处理中使用。判断语句 if … else …a = 3b = 2if a > b: print("a大于b")else: print("b比a大")循环语句 for/while … else …当循环中未执行break语句即循环体正常结束则执行else语句,如果循环中执行了break则不执行else语句for循环elsefor i in range(3): print(i)else: print("循环执行完原创 2022-04-17 17:21:32 · 6646 阅读 · 0 评论 -
使用python批量修改文件名
使用python批量修改文件名在工作中有时候会遇到多个文件名格式不对的情况,需要一一修改,例如从test1.py,test2.py,…,testn.py改为test_1.py,test_2.py,…,test_n.py的情况,如果文件数量少手动改改就算了,但是文件多的话,就不想手动改了,我现在本着重复的事情尽量用代码实现,就想着肯定可以通过python来批量修改的,然后就开始分析:要批量修改文件名,首先得获取所有的文件名批量替换少部分文件名需要把想要的部分提取出来,然后拼接成新的文件名实行文件名替原创 2020-12-27 10:46:05 · 618 阅读 · 0 评论 -
python面试题(1)
python面试题(1)1.一行代码实现1-100之和sum(range(1, 100))提到python求和肯定就是sum()函数了,首先我们得知道sum函数的用法。sum()语法:sum(iterable[, start])参数:iterable:可迭代对象,如列表、元组、集合、range。iterable的项官方文档中写的是通常为数字,后面遇到再说。start:指定相加的参数(必须是数字类型),如果没有,默认0.这个参数是初始值,作用就是从这个初始值开始,不停的加第一个参数迭代出原创 2020-07-30 12:28:37 · 305 阅读 · 0 评论 -
可迭代对象、迭代器和生成器(1)
简单来说可迭代对象包含迭代器,迭代器包含生成器。可迭代对象和迭代器迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。在python中,可迭代的表象是对list、tuple、dict、set、str、range对象等类型的数据使用for循环依次从其中拿到数据进行使用,这个过程称做遍历,也叫迭代。代码角度看是内部含有__iter__方法的对象就是可迭代对象。__iter__方法的作用就是返回一个迭代器对象。原创 2020-07-30 11:51:56 · 328 阅读 · 0 评论 -
python网络编程(1):客户端与网络编程简介
python网络编程(1):客户端与网络编程简介很多情况下,网络编程就是选择并使用一个已经支持所需网络操作的库的过程。1.使用pygeocoder实现地址和经纬度的转换通过pipenv创建虚拟环境,安装pygeocoder,下面把207 N. Defiance St, Archbold, OH转换为经纬度的代码from pygeocoder import Geocoderif __name__ == '__main__': address = "207 N. Defiance St, A原创 2020-07-21 16:42:29 · 1184 阅读 · 0 评论 -
Flask项目的配置信息
Flask项目的配置信息1.安装pipenv并创建虚拟环境windows:pip install pipenvLinux或macOS:sudo pip install pipenv如果有多个版本的python注意是安装到哪个python上,查看使用pip还是pip3。检查pipenv是否安装和版本号pipenv --version创建虚拟环境先在项目跟目录下创建.venv文件夹,这样使得虚拟环境安装在本项目下。默认情况下pipenv会统一管理虚拟环境,在windows中虚拟环境文件原创 2020-07-13 12:20:42 · 791 阅读 · 0 评论 -
Django连接mysql
Django连接mysql1.在虚拟环境中安装pymysql库Django项目默认使用mysqldb模块进行和mysql数据库之间的交互操作,但是mysqldb模块对于python3.4以上的版本支持还不够完善,所以我们要使用替代方案通过pymysql模块完成和数据库之间的交互过程我使用的是pipenv创建的虚拟环境,所以用pipenv install pymysql2.在项目主目录下的__init__文件中添加下面代码import pymysql#这一句很重要,不然会报错django.原创 2020-07-12 11:20:11 · 174 阅读 · 0 评论 -
Virtualenv、pipenv、conda虚拟环境设置方法及原理
Virtualenv、pipenv、conda虚拟环境设置方法及原理1.为什么要创建虚拟环境我第一次接触虚拟环境时第一感觉就是抵触,相信刚开始被各种配置折磨过的小伙伴能理解,我就想是否可以不用虚拟环境,就查了下推荐使用虚拟环境的理由:(1)所有的项目的库都放到一个地方容易混乱,而且比较冗余,毕竟不是所有的项目都需要那么多的库(这一点我根本就不关心嘛,少一步配置就少被折磨一次)(2)因为工作以后都是分工协作的,这个项目能在你电脑上运行,但是到了别人那如果没有安装相应的库就无法运行,所以需要大家能够在库原创 2020-07-07 18:26:42 · 8263 阅读 · 2 评论 -
Python3 struct报错 argument for ‘s‘ must be a bytes object
在用python3进行文件打包二进制数据的存储与解析过程中使用struct模块运行下面代码发生错误:F = open('data.bin', 'wb')import structdata = struct.pack('>i4sh', 7, 'spam', 8)data报错信息如下:error Traceback (most recent call last)<ipython-input-12-9b7a8e6c原创 2020-07-07 18:25:21 · 2343 阅读 · 0 评论 -
python自学日记32——基础查漏补缺(2)
python自学日记32——基础查漏补缺(2)跟着各种教程学了很久,发现很多基础的问题被问到还是答不上来,然后决定把基础中漏掉的觉得有用的内容补一下。首先做个测验:#1. 思考下面三条语句,他们会改变A打印出的值吗?A = 'spam'B = AB = 'shrubbery'#2. 思考下面三条语句,他们会改变A打印出的值吗?A = ['spam']B = AB[0] = 'shrubbery'#3. 这样呢?A = ['spam']B = A[:]B[0] = 'shrub原创 2020-05-18 22:07:40 · 142 阅读 · 0 评论 -
Python自学日记31——基础查漏补缺(1)
Python自学日记31——基础查漏补缺(1)以前经常想找时间阅读Python官方文档,但是一直拖延,这次想着要不直播读文档,让形式感推着我,被人看着读文档总不能偷懒了吧。第一天就发现还真是有一些Python入门书里没有提到的,或者那些你以为你懂了但是你并没有完全懂的知识。在这里就把这些内容记录下来。1.在交互模式下,上一次打印出来的表达式被赋值给变量 _。这意味着当你把Python用作桌面计...原创 2019-12-11 00:58:43 · 179 阅读 · 0 评论 -
Python自学日记30——1000行代码入门JavaScript
Python自学日记30——1000行代码入门JavaScript发现真的如学习外语一样,只有在学习第二种语言的时候你的母语才会更进一步。就像学JavaScript时看到两个问题:如果在定义变量时不指定数据类型它要怎么知道数据的类型?看到定义变量时一次了解了Python、C和JavaScript三种语言定义变量的方式,C是需要指定数据类型的,Python和JavaScript是不需要的。设定...原创 2019-11-17 18:51:49 · 582 阅读 · 0 评论 -
Python自学日记29——数据库查询练习(附emp和demp文件)
Python自学日记29——数据库查询练习(附emp和demp文件)SELECT * FROM emp;-- 1.查询部门编号为30的所有员工SELECT * FROM emp where DEPTNO=30; -- 2.所有销售员的姓名、编号和部门编号SELECT ENAME,EMPNO,DEPTNO FROM emp where JOB='SALESMAN';-- 3.找出奖金高...原创 2019-11-12 22:59:17 · 375 阅读 · 0 评论 -
Python自学日记28——如何选择学习资料
Python自学日记28——如何选择学习资料这两天把数据结构和算法当做定期学习任务转向web开发阶段学习,前天开始学习Django,发现资料过时,很多Django代码在新版本里总是报错,刚开始还坚持了一段时间,把最初的步骤都通过查别人的调整代码跑通了,但是后面问题有些确实自己解决不了就暂时放弃不从头学起直接按照教程做一个小项目的冲动了。这其中其实有一个我图快的问题,本来想着按照书上做一个例子大...原创 2019-11-11 23:15:43 · 169 阅读 · 0 评论 -
python自学日记27——django入门
python自学日记27——django入门这段时间一直在折腾数据结构和算法问题,弄得我也是相当头大。有的资料确实不适合入门,看到二叉搜索树和图时确实有点懵,只讲了如何构建,但没讲怎么用,看着代码敲完一遍也没啥感觉。有些还难以理解。这段时间也让我对学习python和学习编程有了新的认识。就像我昨天回答一个知乎提问说的,有的人想学Python应该要想清楚是喜欢Python还是喜欢编程,如果喜欢编...原创 2019-11-08 22:16:55 · 228 阅读 · 0 评论 -
python自学日记26——二叉树(中序遍历去括号)
python自学日记26——二叉树(中序遍历去括号)1.解析树:中序遍历法去括号将数学表达式表示成解析树from pythonds.basic import Stackfrom pythonds.trees import BinaryTreedef buildParseTree(fpexp): fplist=fpexp.split() pStack=Stack() ...原创 2019-11-05 23:27:21 · 662 阅读 · 0 评论 -
python自学日记25——排序算法
python自学日记25——排序算法1.冒泡排序冒泡排序是比较相邻的元素,将不合顺序的交换。每一轮遍历都将下一个最大值放到正确的位置上。def bubbleSort(alist): for passnum in range(len(alist)-1,0,-1): for i in range(passnum): if alist[i]>...原创 2019-11-04 22:28:05 · 200 阅读 · 0 评论 -
python自学日记24——数据结构与算法(8)
python自学日记24——数据结构与算法(8)1.递归问题:汉诺塔今天还是继续研究递归问题,汉诺塔如下图,规则小盘子不能在大盘子上面,目的是在三个柱子之间来回换直到把所有盘子移动到另一根柱子上。递归的思路是先找到基本情况,只有一个的时候,从A直接移动到B即可,两个时先把一个移动到C,然后把底部的移动到B,再把C上的移动到B即可。这就是基本情况先借助B将高度为height-1的盘子移动...原创 2019-11-03 23:37:05 · 147 阅读 · 0 评论 -
python自学日记23——数据结构与算法(7)
python自学日记23——数据结构与算法(7)1.用递归方法将整数转换成2-16位进制的字符串将十进制转换成其他进制这个问题在“python自学日记20——数据结构与算法(4)”中已经用栈解决过了,当时遇到了一些问题,循环处理、通用化等,最后写出的代码如下:from pythonds.basic import Stackdef divideBy(decNumber,dec): d...原创 2019-11-03 01:53:39 · 158 阅读 · 0 评论 -
python自学日记22——数据结构与算法(6)
python自学日记22——数据结构与算法(6)1.用队列解决在超市等待结账问题(自编)假设一家超市只有一个收银台,收银台每分钟可结算20件商品,每天高峰期1小时结算人流量可达200人,每人购买商品数量在1-30件不等,客户平均等待时间每小时结算人流达200人,即每18秒创建一个待结算任务,每秒生成待结算人物的概率是1/18.设定一个随机数,如果数字等于18,则创建一个待结算任务impor...原创 2019-11-01 21:58:45 · 231 阅读 · 0 评论 -
python自学日记21——数据结构与算法(5)
python自学日记21——数据结构与算法(5)1.队列:模拟打印任务代码一变长就容易出现写错的地方,最好还是进行增量开发,写一段测一下,在关键节点写print语句,省的全写完报错再找起来也麻烦。由于模拟情况内容较多,本着抽象思维只提取对问题有用的信息,简要的说一下避免后面读不懂问题实验室每小时有10个学生,一个小时内每个人都打印2次,即每小时有20个打印任务,每个打印任务打印页数在1到2...原创 2019-10-31 21:45:06 · 229 阅读 · 0 评论 -
python自学日记20——数据结构与算法(4)
python自学日记20——数据结构与算法(4)1.用python实现栈栈是一种后进先出的线性有序集合,每当python需要实现像栈这样的抽象数据结构时,就可以创建类。我看到后进先出就想到了沃尔玛这种大型仓库的进库出库顺序有的是后进先出。还有一摞书放和拿都是从顶部。可以用列表来实现栈,最符合的情况是把列表的尾部当做栈的顶部处理,这样添加、删除元素都是比较简单的,代码如下:class Sta...原创 2019-10-30 17:59:54 · 449 阅读 · 0 评论 -
python自学日记19——数据结构与算法(3)
python自学日记19——数据结构与算法(3)算法分析做算法分析前需要明白程序和它所代表的算法是不同的。算法是给定某个输入能得到对应的结果,是解决问题的方法,程序则是用某种编程语言对算法编码。同一个算法可以用python、java、C语言等各种编程语言写出来,即便在同一种语言中,一个算法也可以对应多个程序。以前我对代码可读性并没有太多的感触,直到看到同一个算法用不同的程序写出来才明白代码可...原创 2019-10-29 22:56:01 · 1873 阅读 · 0 评论 -
python自学日记18——数据结构与算法(2)
python自学日记18——数据结构与算法(2)这两天找了很多关于Python讲解数据结构和算法的书和视频,最终确定下来《python数据结构与算法分析》以及北京大学线上课程“数据结构与算法python版”,先看了课程后来发现好像课程结构和这本书差不多,就当配套视频看了。刚开始还是从一些理论知识开始,虽然也想马上开始敲代码,但是理论内容还是需要掌握一些的,确实有给自己带来一些新的认识。我也一直...原创 2019-10-28 22:01:27 · 214 阅读 · 0 评论 -
python自学日记2——函数调试
python自学日记2——函数调试修改内容:新增了对最大公约数的求解进行了优化将一个大程序分解为小函数,自然而然地引入了调试的检查点,如果一个函数不能正常工作,可以考虑3种可能性。函数获得的实参有问题,某个前置条件没有达到函数本身有问题,某个后置条件没有达到函数的返回值有问题,或者使用的方式不正确要排除第一种可能,可以在函数开始的地方加上print语句,显示实参的值(以及它们的类型...原创 2019-10-28 18:56:58 · 202 阅读 · 0 评论 -
python自学日记17——数据结构和算法(1)
python自学日记17——数据结构和算法(1)1.解压可迭代对象赋值给多个变量如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError 。那么怎样才能从这个可迭代对象中解压出 N 个元素出来?python的星号表达式可以解决这个问题:def drop_fisrt_last(grades): first,*middle,last=grades retur...原创 2019-10-26 22:13:44 · 173 阅读 · 0 评论 -
python自学日记16——调试(常见错误)
python自学日记16——调试(常见错误)整理一套错误检查清单将在你未来编程时提供很大的助力。1.语法错误语法错误由python在将源代码翻译为字节的过程中产生。例如在def语句的末尾漏电冒号会产生一个冗余的错误信息:def repeat_lyrics(): print_lyrics() print_lyrics()repeat_lyrics()def print_...原创 2019-10-25 23:16:04 · 3639 阅读 · 0 评论 -
python自学日记15——Tkinter
python自学日记15——Tkinter调试建议:GUI编程的挑战之一是哟啊记录哪些事情是在GUI正在构建时发生的,哪些事情是在之后用户行为的响应中发生的。例如,当设置回调时,一个常见的错误是没有传入函数的引用,而是直接调用它:def the_callback(): print('Called.')g.bu(text='This is wrong!',command=the_...原创 2019-10-24 21:16:16 · 200 阅读 · 0 评论 -
python自学日记14——继承(扑克牌)
python自学日记14——继承(扑克牌)随时提醒自己是否抓住了问题的关键对于解决问题的有很大的帮助——第三小节1.用类来定义一副扑克牌本次定义扑克牌排除大小王,只针对其他的52张牌,共有4个花色,每种花色13张。如果我们想定义一个新对象来表示卡牌,则其属性显然应该是rank(大小)和suit(花色)。但属性值就不那么直观了。我们模仿Unicode给字母、汉字等字符通过数字编码的形式使用证书...原创 2019-10-23 22:21:11 · 1374 阅读 · 0 评论 -
python自学日记13——类和方法
python自学日记13——类和方法1.操作符重载通过定义其他的特殊方法,你可以为用户定义类型的各种操作符制定行为。例如,如果你为Time类定义一个__add__方法,则可在时间对象上使用+操作符class Time(object): def __init__(self,hour=0,minute=0,second=0): self.hour=hour ...原创 2019-10-22 17:46:36 · 404 阅读 · 0 评论 -
python自学日记3——迭代
将下面递归函数用循环方式写出来:def print_n(s,n):if n<=0:returnprint(s)print_n(s,n-1)print_n(3,4)我刚开始写的是这样的:def print_n(s,n):while n>0:print(s)n=n-1print_n(‘hello’,4)报错提示:TypeError: print() missing...原创 2019-10-22 17:45:38 · 178 阅读 · 0 评论 -
python自学日记12——类和函数
python自学日记12——类和函数有时候把一个问题弄得更难(或者更通用)反而会让它变得更简单(因为会有更少的特殊情况以及更少的出错机会)。1.编写一个print_time函数,接收一个时间对象作为形参并以“时:分:秒”的格式打印它。要演示这个问题,需要先把时间对象写出来,首先定义一个类,然后实例化生成一个时间对象class Time(object): ''' Repres...原创 2019-10-21 22:38:48 · 190 阅读 · 0 评论 -
python自学日记11——类和对象
python自学日记11——类和对象1.编写一个函数move_rectangle,接受一个Rectangle对象和两个值,dx,dy。它应当通过添加dx到corner的x坐标和添加dy到corner的y坐标来改换矩形的位置因为这个练习涉及了很多前面的例子和练习,如果不写出来可能看不懂,所以把需要涉及的内容先写出来。首先我们定义一个类型叫做类:class Point(object): ...原创 2019-10-20 18:54:11 · 312 阅读 · 0 评论 -
python自学日记10——文件
python自学日记10——文件让自己尽量暴露在错误之中是成长的一个比较快的方式,发下错误就证明你要习得新知识点了。1.写一个函数sed,接收如下参数,一个模式字符串,一个替换用字符串,以及两个文件名;读取第一个文件,并将内容写入第二个如果文件中任何地方出现了模式字符串,它应该被替换如果在过程中遇到错误,你的程序应当能捕获异常,打印一个错误,并退出。首先要抓取关键信息,一个函数四个形参,两...原创 2019-10-19 16:54:39 · 278 阅读 · 0 评论 -
python自学日记9——选择数据结构
python自学日记9——选择数据结构1.编写一个程序从文件中读入一个单词列表,并打印出所有是回文的单词集合这次的回文和以前理解的回文不一样,例子如下:[‘deltas’,‘desalt’,‘lasted’,‘salted’,‘slated’,‘staled’][‘retainers’,‘ternaries’]只要都是相同字母组成的单词都算在回文的单词集合中按照抓取关键信息转化成自己已...原创 2019-10-18 21:26:06 · 232 阅读 · 0 评论 -
python自学日记8——元组
python自学日记8——元组遇到一个问题时抓取里面的关键信息并将这些关键信息转化为你已经掌握的函数方法才是解决未知问题之道。1.编写一个函数sumall,接收任意个数的参数并返回它们的和提示写了sum(1,2,3)会报错:sum expected at most 2 arguments,got 3接受多个参数我知道需要用到元组,但是我不知道哪里,所以先写成这样:def sumall(t...原创 2019-10-17 22:45:16 · 1015 阅读 · 0 评论 -
python自学日记7——字典
python自学日记7——字典学会把复杂问题拆解成自己已经掌握的基础问题才是正确的学习之道——傅查理1.编写一个函数,读入words.txt,并将它们作为键保存到一个字典中后面还有使用in检查某单词是否在字典中,按说这个并不难,先读取单词表,然后通过将单词作为键,值用空字符就可以了,然后代码如下:def read_dict(): fin=open('words.txt') wor...原创 2019-10-16 17:36:14 · 646 阅读 · 0 评论 -
python自学日记6——列表
python自学日记6——列表学习python时记录自己或观察别人从错误到正确的思路远比只看正确答案效果好——傅查理1.编写一个函数,接收一个数字列表,并返回其累积和,例如[1,2,3]的累积和为[1,3,6]看到求和想到前面用到的内置函数sum(t),但是sum只说了是求列表内所有值的和,不知道能不能求部分和,所以需要做一下测试t=[1,2,3]sum(t[:2])返回值是3,表示...原创 2019-10-15 20:23:27 · 332 阅读 · 0 评论 -
python自学日记5——文字游戏
python自学日记5——文字游戏学习python时记录自己或观察别人从错误到正确的思路远比只看正确答案效果好——傅查理1.判断单词中是否有字母“e"写一个函数has_no_e,当给定的单词不包含字母‘e’时,返回True刚开始我写的是这样的:def has_no_e(word): for letter in word: if letter=='e': ...原创 2019-10-14 18:44:45 · 461 阅读 · 2 评论 -
python自学日记4-字符串
python自学日记4-字符串1.for循环使用for循环遍历字符由于好久没用for循环了,有点生疏,竟然写成了下面代码fruit='banana'len(fruit)index=0for index<len(fruit): print(fruit[index]) index+=1File “”, line 3for index<len(fruit)...原创 2019-10-14 00:08:00 · 357 阅读 · 0 评论