python自学笔记_python 学习笔记(上)

python 学习笔记(上)

1、利用collections库的Counter方法统计字符串每个单词出现的次数

>>> from collections import Counter

>>> f=Counter(d)

>>> f

Counter({'l': 9, ';': 6, 'h': 6, 'f': 5, 'a': 4, 'j': 3, 'd': 3, 's': 2, 'k': 1, 'g': 1, 'b': 1})

2、字典根据键从小到大排序

>>> dict={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}

>>> b=list(sorted(dict.keys(),reverse=False))

>>> b

['age', 'city', 'name', 'tel']

>>> k=list(sorted(dict.items(),reverse=False))

>>> k

[('age', 18), ('city', '深圳'), ('name', 'zs'), ('tel', '1362626627')]

3、用lambda函数实现两个数相乘

>>> sums = lambda a,b:a*b

>>> sums(2,3)

6

4、去重字符并从小到大排序输出

1、set去重,去重转成list,利用sort方法排序,reverse=False是从小到大排

2、list是不 变数据类型,s.sort时候没有返回值,所以注释的代码写法不正确

>>> s = "ajldjlajfdljfddd"

>>> set(m)

{'l', 'a', 'd', 'f', 'j'}

>>> n.sort()

>>> n

['a', 'd', 'f', 'j', 'l']

>>> ''.join(n)

'adfjl'

5、python2和python3区别?列举6个

1、Python3 使用 print 必须要以小括号包裹打印内容,比如 print(‘hi’):Python2 既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容,比如 print ‘hi’

2、python2 range(1,10)返回列表,python3中返回迭代器,节约内存

3、python2中使用ascii编码,python中使用utf-8编码

4、python2中unicode表示字符串序列,str表示字节序列, python3中str表示字符串序列,byte表示字节序列

5、python2中为正常显示中文,引入coding声明,python3中不需要

6、python2中是raw_input()函数,python3中是input()函数

6、filter方法求出列表所有奇数并构造新列表

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表

>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> def odd(a):

... return a%2==1

...

>>> new_l = filter(odd, a)

>>> new_l

>>> new = [i for i in new_l]

>>> new

[1, 3, 5, 7, 9]

7、filter方法求出列表所有奇数并构造新列表

>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> b=[i for i in a if i%2==1]

>>> b

[1, 3, 5, 7, 9]

8、两个列表[1,5,7,9]和[2,2,6,8]合并为[1,2,2,3,6,7,8,9]

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

append:

>>> a=[1,5,7,9]

>>> b=[2,2,6,8]

>>> a.append(b)

>>> a

[1, 5, 7, 9, [2, 2, 6, 8]]

extend:

>>> a.extend(b)

>>> a

[1, 5, 7, 9, 2, 2, 6, 8]

#等价于a+b

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

python:os.remove(文件名)

linux: rm 文件名

10、数据库优化查询方法

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

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

pychart、matplotlib

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

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

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

>>> import re

>>> str = '哈哈呵呵'

>>> s1 =re.findall("(.*)", str)

>>> s1

['哈哈呵呵']

>>> s2 =re.findall("(.*?)", str)

>>> s2

['哈哈']

13、[[1,2],[3,4],[5,6]]一行代码展开该列表,得出[1,2,3,4,5,6]

>>> a=[[1,2],[3,4],[5,6]]

>>> b=[j for i in a for j in i]

>>> b

[1, 2, 3, 4, 5, 6]

13、x=”abc”,y=”def”,z=[“d”,”e”,”f”],分别求出x.join(y)和x.join(z)返回的结果

>>> x='abc'

>>> y='def'

>>> z=['d','e','f']

>>> p=x.join(y)

>>> p

'dabceabcf'

>>> g=x.join(z)

>>> g

'dabceabcf'

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

>>> a=[3,4]

>>> b=[1,2]

>>> s=[i for i in zip(a,b)]

>>> s

[(3, 1), (4, 2)]

##其中a,b可以为元组a=(3,4),也可以为字符串a='34'

>>> q='asd'

>>> w='ip'

>>> f=[i for i in zip(q,w)]

>>> f

[('a', 'i'), ('s', 'p')]

##字符取最短的元素的长度

15、a=”张明 98分”,用re.sub,将98替换为100

>>> a="张明 98分"

>>> d=re.sub(r'\d+','100',a)

>>> d

'张明 100分'

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

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

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

3)核心模块用Cython PyPy等,提高效率

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

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

17、简述mysql和redis区别

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

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

18、遇到bug如何处理

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

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

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

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

19、正则匹配,匹配日期2018-10-20

>>> import re

>>> url='https://www.MuMu?datetime=2018-10-20%202018-03-20&page=1'>>> res = re.findall(r'datetime=(.*?)%20(.*?)&',url)

>>> res

[('2018-10-20', '2018-03-20')]

20、保留两位小数

>>> a="%.02f"%3.1415926

>>> a

'3.14'

>>> a="%.03f"%3.1415926

>>> a

'3.142'

21、列出常见的状态码和意义

200 OK:请求正常处理完毕

204 No Content:请求成功处理,没有实体的主体返回

206 Partial Content:GET范围请求已成功处理

301 Moved Permanently :永久重定向,资源已永久分配新URI

302 Found :临时重定向,资源已临时分配新URI

303 See Other :临时重定向,期望使用GET定向获取

304 Not Modified :发送的附带条件请求未满足

307 Temporary Redirect :临时重定向,POST不会变成GET

400 Bad Request :请求报文语法错误或参数错误

401 Unauthorized :需要通过HTTP认证,或认证失败

403 Forbidden:请求资源被拒绝

404 Not Found :无法找到请求资源(服务器无理由拒绝)

500 Internal Server Error :服务器故障或Web应用故障

503 Service Unavailable :服务器超负载或停机维护

# 输入一个整数,返回该数的阶乘倒数第一个非零数,如:结果为1200,则输出2

# 思路: 由于有的数量级超过了正常长度,所以每次计算结果的末尾的0都要去掉

a = input("输入一个整数:")

num = 1

for i in range(1, int(a)+1):

num*= i

num = int(str(num).replace('0',''))

result = str(num).replace('0','')[-1]

print(result)

# 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

# star ====

sums = 0

for i in range(1, 5):

for j in range(1, 5):

for z in range(1, 5):

if i != j and j != z:

sums += 1

print(i,j,z)

print(sums)

# end ====

# 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

# star ====

import math

for i in range(10000):

if math.sqrt(i+100) - int(math.sqrt(i+100)) == 0:

x = int(math.sqrt(i+100))

if math.sqrt(i+268) - int(math.sqrt(i+268)) == 0:

y = int(math.sqrt(i+268))

print(x,y)

# if x*x == 100 + i and y*y == i+268:

# print(x,y)

# end ====

#题目:输入三个整数x,y,z,请把这三个数由小到大输出。

# star ====

x = input('输入第一个数')

y = input('输入第一个数')

z = input('输入第一个数')

if int(x) > int(y):

if int(x) > int(z):

if int(y) > int(z):

print(z, y, x)

else:

print(y, z, x)

else:

print(y, x, z)

else:

if int(x) < int(z):

if int(y) < int(z):

print(x, y, z)

else:

print(x, z, y)

else:

print(z, x, y)

# 内置方法

l = [int(x), int(y), int(z)]

# news = l.sort()

news= sorted(l)

news_1= sorted(l, reverse=True) # True:倒序

# sorted:不改变原列表、sort则会改变源列表

print(l, news, news_1)

# end ====

# 题目:判断101-200之间有多少个素数,并输出所有素数。

# 思路 :在一般领域,对正整数n,如果用2到 sqrt(n) 之间的所有整数去除,均无法整除,则n为质数。

import math

num = input("输入一个101-200之间的整数")

def check(n):

for i in range(2, int(math.sqrt(n)) + 1):

if n % i == 0:

return False

return True

print(check(int(num)))

原文:https://blog.csdn.net/weixin_40907382

/article/details/80621513

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值