【python】求助一道关于单词数的python题

1、一行代码实现1--100之和

利用sum()函数求和

2、如何在一个函数内部修改全局变量

函数内部global声明 修改全局变量

os:提供了不少与操作系统相关联的函数

sys: 通常用于命令行参数

4、字典如何删除键和合并两个字典

GIL 是python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。

多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大

6、python实现列表去重的方法

先通过集合去重,在转列表

python2返回列表,python3返回迭代器,节约内存

9、一句话解释什么样的语言能够用装饰器?

函数可以作为参数传递的语言,可以使用装饰器

10、python内建数据类型有哪些

__init__是初始化方法,创建对象后,就立刻被默认调用了,可接收参数,如图

1、__new__至少要有一个参数cls,代表当前类,此参数在实例化时由Python解释器自动识别

2、__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类(通过super(当前类名, cls))__new__出来的实例,或者直接是object的__new__出来的实例

4、如果__new__创建的是当前类的实例,会自动调用__init__函数,通过return语句里面调用的__new__函数的第一个参数是cls来保证是当前类实例,如果是其他类的类名,;那么实际创建返回的就是其他类的实例,其实就不会调用当前类的__init__函数,也不会调用其他类的__init__函数。

12、简述with方法打开处理文件帮我我们做了什么?

打开文件在进行读写的时候可能会出现一些异常状况,如果按照常规的plie作用

re.compile是将正则表达式编译成一个对象,加快速度,并重复使用

extend可以将另一个集合中的元素逐一添加到列表中,区别于append整体添加

32、用python删除文件和用linux命令删除文件方法

顺便把星期的代码也贴上了

34、数据库优化查询方法

外键、索引、联合查询、选择特定字段等等

35、请列出你会的任意一种统计图(条形图、折线图等)绘制的开源库,第三方也行

36、写一段自定义异常代码

自定义异常用raise抛出异常

37、正则表达式匹配中,(.*)和(.*?)匹配区别?

(.*)是贪婪匹配,会把满足正则的尽可能多的往后匹配

(.*?)是非贪婪匹配,会把满足正则的尽可能少匹配

实现了数据模型与数据库的解耦,通过简单的配置就可以轻松更换数据库,而不需要修改代码只需要面向对象编程,orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句,所有使用Django开发的项目无需关心程序底层使用的是MySQL、Oracle、sqlite....,如果数据库迁移,只需要更换Django的数据库引擎即可

还有更骚的方法,将列表转成numpy矩阵,通过numpy的flatten()方法,代码永远是只有更骚,没有最骚

join()括号里面的是可迭代对象,x插入可迭代对象中间,形成字符串,结果一致,有没有突然感觉字符串的常见操作都不会玩了

顺便建议大家学下os.path.join()方法,拼接路径经常用到,也用到了join,和字符串操作中的join有什么区别,该问题大家可以查阅相关文档,后期会有答案

43、举例说明zip()函数用法

zip()函数在运算时,会以一个或多个序列(可迭代对象)做为参数,返回一个元组的列表。同时将这些序列中并排的元素配对。

zip()参数可以接受任何类型的序列,同时也可以有两个以上的参数;当传入参数的长度不同时,zip能自动以最短序列长度为准进行截取,获得元组。

45、写5条常用sql语句

两个列表相加,等价于extend

48、提高python运行效率的方法

1、使用生成器,因为可以节约大量内存

2、循环代码优化,避免过多重复代码的执行

4、多进程、多线程、协程

5、多个if elif条件判断,可以把最有可能先发生的条件放到前面写,这样可以减少程序判断的次数,提高效率

redis: 内存型非关系数据库,数据保存在内存中,速度快

mysql:关系型数据库,数据保存在磁盘中,检索的话,会有一定的Io操作,访问速度相对慢

50、遇到bug如何处理

1、细节上的错误,通过print()打印,能执行到print()说明一般上面的代码没有问题,分段检测程序是否有问题,如果是js的话可以alert或console.log

2、如果涉及一些第三方框架,会去查官方文档或者一些技术博客。

3、对于bug的管理与归类总结,一般测试将测试出的bug用teambin等bug管理工具进行记录,然后我们会一条一条进行修改,修改的过程也是理解业务逻辑和提高自己编程逻辑缜密性的方法,我也都会收藏做一些笔记记录。

4、导包问题、城市定位多音字造成的显示错误问题

}

前面介绍了选择python开发工具的方法,根据需求和学习阶段的不同来选择不同的编译器。从本篇开始我们就选用Anaconda中的spyder模块作为开发编译平台,在下载过程中可以直接百度搜索anaconda,就可以进入其官网,找到下载链接,进行下载。

这里建议选择python3.7版本的Anaconda下载,同时根据自己电脑操作系统是32位还是64位来选择对应版本,下载后直接安装即可。

安装完成后在程序里找到anaconda,选择里面的spyder模块启动,就进入spyder程序开发页面:

有了工具,接下来我就从python使用时的基础语法开始说起。

标识符:也就是参数命名,python使用英文字母、下划线和数字构成,而且第一个字符不能为数字。在python中标识符对大小写是敏感的。举个栗子:

引号的用法:在python中引号有三种:单引号、双引号、三引号。这三种引号都可以用来作为字符串的标记,如下例子:

单引号和双引号作用基本一样,三引号在使用的时候对大段字符有优势,也就是如果大段字符首尾使用三引号,当需要换行时直接使用回车就可以,如上str4的字符串就有换行。

代码注释:在编写程序时经常加注释是个很好的习惯,有助于理解程序的含义。在python中有两种方式用于注释,如果注释只需要在一行完成,就是注释行开始加上“#”符号,如果多行注释,就使用三个单引号或者三个双引号。如下例子:

行与缩进:python使用缩进来表示代码块而不是使用大括号{}。同一个代码块内的缩进数必须相同。实际在使用的时候如果在相同代码块里,写完第一行后直接回车,编译器会自动与上一行对齐,也就是保证缩进数相等;如果要开始不同的代码块,就在新一行开头去除之前的缩进数即可。

输入输出:在python3里如果要从键盘输入,直接使用input语句即可,如果要输出结果,直接使用print语句。具体用法如下例子:

如果运行该代码,在spider右下方控制台区域就可以根据打印的提示输入a的值,然后紧接着执行print输出语句。需要注意的时候python3会默认输入的值为字符。

python比较灵活,省却了繁琐的变量声明方式,这给初学者有极大的便利。比如a=3,c=‘a',在不声明变量是什么类型的时候,相信初学者一看就明白a是数值,而c是字符串。但也有较为复杂的数据组合或集合类型,下面我们一一介绍。

数字类型:与基本的数据类型对应,数字类型包括整型(integer)、浮点型(float 或double)、布尔型(bool)等,但在python3中这些类型都不用定义,系统会自动识别变量类型。同时可以直接使用python自带的type函数来查看变量类型。

数值运算:包括加减乘除四则运算,这个部分参与运算的均为数字,就直接进行四则运算即可。在赋值的时候还可以多个变量同时赋值,方式为a,b=2,3,这就是给a赋值为2,给b赋值为3。不过在除法的时候需要注意一下,使用/来表示,如a/b。当使用双斜杆时输出结果为a//b,取a/b结果的整数部分,而如果使用%,如a%b,则是计算a/b结果的余数部分。

字符串类型:在python中字符串首尾使用引号来标识,包括单引号、双引号或者三个单引号。

字符串类型的运算:包括加和乘,不过其意义与数字运算完全不同。加号+为拼接(连接)操作,乘号为复制操作(乘号后面需要设定数字,即复制几次),例如:

字符串数组:而字符串在python里是一类特殊的数组,也就是说字符串是由多个字符组成的,因此可以使用数组的方式来对其中的字符进行定位和识别,同时也就会具有python内置的一些字符串处理函数。如下str1为字符串,里面包括三个单词,但这个字符串并不是由这三个单词构成,准确的说应该是由三个单词的字符加上空格字符构成。使用字符个数的方式来统计,就是这个str1一共包括19个字符,而第一个字符为n,其在这个str1字符串里的索引或者下标位置为0,第二个字符为o,它的索引值为1,依次类推可以将其余的字符给予定位。

数据容器(Container):通常是可以容纳多个变量或者数组,python里基本容器包括列表List、元组Tuple、集合Set、字典Dictionary。下面用一张图来对比说明一下基本用法:

列表List类型:是一种有序的数据集合,列表中的元素可以相同也可以不相同,它支持数字、字符甚至可以包含子列表。列表定义的时候括号使用[ ],方括号,数据放在方括号之间,以逗号分隔开。

#直接修改对应元素的值 #max()、min()获取列表中最大值元素和最小值元素 #insert()方法在指定位置插入新的元素 #pop()方法移除列表中的一个元素 #sort()方法实现列表排序 #list()方法可以将字符串转换为列表

元组Tuple类型:与list列表一样,也属于数据集合,元素可以是数字、字符等。元组定义的时候括号使用(),小括号,数据放在小括号之间,以逗号分隔开。它的特点是,定义后也就是给定结构后,不可改变,包括大小和值都无法更改。

#max()、min()获取元组中最大值元素和最小值元素 #tuple()方法可以将列表转换为元组

集合Set类型:集合类型属于无序、不可重复的数据集合,元素可以是数字、字符等。集合set定义的时候括号使用{ },花括号,数据放在花括号之间,以逗号分隔开。或者使用set()函数创建集合。需要注意的是,如果创建空集合,需要使用set()函数。

print(mset) #打印集合,可以看控制台输出结果,并不会按abcd这个顺序打印,是一个无序的结果 #add()方法可以给集合添加新元素 #remove()方法为从集合元素中去除某个指定元素 #pop()方法为随机删除一个元素 #clear()方法为清空集合中所有元素 #len()方法获得集合元素的个数,也就是集合长度

字典Dictionary类型:这种类型比较常用,其构造样式为键值对,简单说就是名称和所对应的属性,名称为key,属性为值value,如key为姓名,value则为到底姓甚名谁。在同一个字典里key是唯一的,不可重复。字典由一个或者多个键值对组成,键值对中间采用冒号:分割,每个键值对中间采用逗号隔开,整个字典外层为{ }花括号。

} #构建一个字典名称为student,里面为三个键值对

python的数据容器有点类似于C语言里的数组array,不过在这里没有这样的组织,换以上述四种数据组合方式。使用的时候各有优缺点,也各有需要注意的地方。尤其是对于字符串这种类型的数据,本身字符串就是一种数据容器,可以以list列表类型对其进行分析处理,也可以使用集合方式来处理。

}

    关注技术领域的头条文章

    聚合全网技术文章,根据你的阅读喜好进行个性推荐

聚合全网技术文章,根据你的阅读喜好进行个性推荐

深圳市奥思网络科技有限公司版权所有

}

我要回帖

更多关于 python编程题目 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信