学会做笔记
用法查询笔记
1. 算数运算符↓ 2. 列表 ↓
3. 字典↓
4. 格式化字符串↓
5. print()不换行
6. 随机random库
7. .strip()移除、.split() (切片、分割)、.join()(合并)
8.定时器模块schedule
9.dir()函数查看一个模块,看里面有什么变量、函数、类、类方法。
10.quote()函数,可以帮我们把内容转为标准的url格式
深度查询笔记
1. 循环↓ 2. 字典和列表↓
3.
解题思路
——————————————————————————————
用法查询笔记
2.列表 ↓
两个list合并的5种方法:
a=[1,2,3,4,5,6]
b=['a','b','c','d']
print(a+b)
>[1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'd']
a+=b
print(a)
>[1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'd']
a.extend(b)
print(a)
>[1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'd']
a.append(b) #相当于增加一个元素
print(a)
>[1, 2, 3, 4, 5, 6, ['a', 'b', 'c', 'd']]
a[0:0] = b
print(a)
>['a', 'b', 'c', 'd', 1, 2, 3, 4, 5, 6]
列表的排序(升序,降序,翻转),去掉重复
a = [1,2,5,3,5]
b = [8,7,6,1,8]
a=a+b
a.reverse() #翻转
print(a)
>[8, 1, 6, 7, 8, 5, 3, 5, 2, 1]
a.sort(reverse=True) #降序,从大到小排列
print(a)
>[8, 8, 7, 6, 5, 5, 3, 2, 1, 1]
a.sort() #升序,从小到大排列
print(a)
>[1, 1, 2, 3, 5, 5, 6, 7, 8, 8]
c=list(set(a)) #去掉重复且从小到大排列,set(a)会去重复且升序但返回的类型是集合,加上list()函数可将集合改为列表。
print(c)
>[1, 2, 3, 5, 6, 7, 8]
求和,求元素个数,求平均值,中位数
a = [1, 2, 5, 3, 5, 8, 7, 6, 1, 8]
print(sum(a)) #sum()函数'求和'
>46
print(len(a)) #len()函数'求元素的个数'
>10
print(sum(a)/len(a)) #求平均值
>4.6
________________________________________
import numpy as np #导入numpy库求平均数,中位数
a = [1, 2, 5, 3, 5, 8, 7, 6, 1, 8]
b=np.mean(a) #np.mean(a)求平均数
print(b)
>4.6
b=np.median(a) #np.median(a) 求中位数
print(b)
>5
3.字典↓
a = dict(aa=98,bb=99,cc=87,dd=86)
a['aa'] = 100 #改变某个键值
print(a)
>{'aa': 100, 'bb': 99, 'cc': 87, 'dd': 86}
b={'aa': 100, 'bb': 99, 'cc': 87, 'dd': 86}
b['ee'] = 90 #增加新的键值对
print(b)
>{'aa': 100, 'bb': 99, 'cc': 87, 'dd': 86, 'ee': 90}
c={'aa': 100, 'bb': 99, 'cc': 87, 'dd': 86, 'ee': 90}
del c['cc'] #删除某个键及其值
print(c)
>{'aa': 100, 'bb': 99, 'dd': 86, 'ee': 90}
d={'aa': 100, 'bb': 99, 'dd': 86, 'ee': 90}
print(d.pop('aa')) #删除某个键及其值并得到其值
>100
print(d)
{'bb': 99, 'dd': 86, 'ee': 90}
.两个字典合并:
a={'a':1,'b':2,'c':3}
b= {'aa':11,'bb':22,'cc':33}
c=dict(a,**b)
print(c)
>{'a': 1, 'b': 2, 'c': 3, 'aa': 11, 'bb': 22, 'cc': 33}
4.格式化字符串↓
在Python中,采用的格式化方式和C语言是一致的,用 % 实现。 % 运算符就是用来格式化字符串的,在字符串内部,%s 表示用字符串替换,%d 表示用整数替换,有几个 % 占位符,后面就跟几个变量或者值,顺序要对应。如果只有一个 % ,括号可以省略。
常见的占位符有:
占位符 | 替换内容 |
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
print('亲爱的%s您好!您%d月的话费是%.2f,余额是%.2f' % ('Aamax',5,123.345453,454.5465465))
>亲爱的Aamax您好!您5月的话费是123.35,余额是454.55
#在浮点数%f中取两位小数点用%.2f
如果不确定%d,%f,%s怎么用,那就任何情况下都写为 %s 。 %s 会把任何数据类型转化为字符串,有些时候,字符串里面%是一个普通字符,这种情况下就需要转义,用 %% 来表示一个%
print('%s月份,营业额上升了%s %%' % (5,7))
>5月份,营业额上升了7 %
format()
另一种格式化字符串的方法是使用字符串的 format() 方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}、{2}......
用法1
print('{0}月份,环比上升了{1} %,同比上升了{2:.2f}%'.format(5,7,3.1856))
print('{}月份,环比上升了{} %,同比上升了{:.2f}%' .format(5,7,3.1856))
>5月份,环比上升了7 %,同比上升了3.19%
>5月份,环比上升了7 %,同比上升了3.19%
——————————————————————————————————————————————
用法2
age = 25
height=175
weight=115
print(f"我的年龄: {age}岁 ,我的身高是:{height}厘米,我的体重是{weight}斤")
>我的年龄: 25岁 ,我的身高是:175厘米,我的体重是115斤
#这种由f、引号、{}的组合,相当于告诉python,这是一个格式化字符串,把这几个变量放在大括号里面。
- print()不换行↓
不换行用 end='' '引号'之间加入'空格',可以改变间距的大小,输入+号可以将其连接
for i in range (1,10):
for j in range(1,10):
print('%d X %d = %d' % (j,i,i*j),end='')
if i==j:
print('')
break
6.随机random库↓
import random
a=['我','爱','你','们']
b=random.choice(a) #random.choice(a) 随机选择其中的一个元素
print(b)
>你 #随机出现
a=random.randint(20,30) #random.randint(a,b) 随机选择a-b范围内的数字
print(a)
>24
list=['小明','小红','小东','小黑','小白']
a=random.sample(list, 3) #random.sample(seq, n)随机选择指定列表中的几个元素,seq指列表的名称,n指需要几个随机元素
print(a)
a = random.random() # 随机从0-1之间抽取一个小数
print(a)
>0.3387948276036278
items = [1, 2, 3, 4, 5, 6] # “随机洗牌”,比如打乱列表
random.shuffle(items)
print(items)
>[3, 5, 6, 1, 2, 4]
- .strip()移除、.split() (切片、分割)、.join()(合并)
#.strip()用于移除字符串头尾指定的字符(默认为空格)
a='hai你好566iiii'
print(a.strip('56hai')) #.strip()用于移除字符串头尾指定的字符(默认为空格)
>你好
————————————————————————————————————————————————————————————————————
# str.split(str=' ', num=string.count(str)), 参数str分隔符(默认为空格), num – 分割次数。返回分割后的字符串列表。
#通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子符串.
a='小明 55 60 88 22' #如果这里的分隔符为+ 那么对应的就以'+'为分隔符进行切割
print(a.split()) #默认为空格
print(a.split(' ')) #中间加了空格键
print(a.split(' ',1)) #以空格为分隔符分割一次
>['小明', '55', '60', '88', '22']
>['小明', '55', '60', '88', '22']
>['小明', '55 60 88 22']
__________________________________________________________________
#str.join(seq), 参数seq要连接的元素序列, 返回通过指定字符连接序列中元素后生成的新字符串。
#用于将序列中的元素以指定的字符连接生成一个新的字符串。
a=['小明', '55', '60', '88', '22']
print(''.join(a)) #没有指定字符
print(' '.join(a)) #指定字符为空格
print('+'.join(a)) #指定字符为+
>小明55608822
>小明 55 60 88 22
>小明+55+60+88+22
8.定时器模块schedule
#定时模块schedule
import schedule
import time
#引入schedule和time
def job():
print("I'm working...")
#定义一个叫job的函数,函数的功能是打印'I'm working...'
schedule.every(2).seconds.do(job) #每2s执行一次job()函数
schedule.every(10).minutes.do(job) #部署每10分钟执行一次job()函数的任务
schedule.every().hour.do(job) #部署每×小时执行一次job()函数的任务
schedule.every().day.at("10:30").do(job) #部署在每天的10:30执行job()函数的任务
schedule.every().monday.do(job) #部署每个星期一执行job()函数的任务
schedule.every().wednesday.at("13:15").do(job)#部署每周三的13:15执行函数的任务
while True:
schedule.run_pending() #检查上面的任务部署情况,如果任务已经准备就绪,就去启动执行。
time.sleep(1) #让程序按1秒来检查,如果检查太快,会浪费计算机的资源。
#16-18都是检查部署的情况,如果任务准备就绪,就开始执行任务。
dir()函数查看一个模块,看看它里面有什么变量、函数、类、类方法。
import random
print(dir(random)) #用dir()查看模块里的方法
>['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_BuiltinMethodType', '_MethodType', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_inst', '_itertools', '_log', '_os', '_pi', '_random', '_sha512', '_sin', '_sqrt', '_test',
'_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
#会得到一个列表,里面的带 _ _ 和前面的都是与系统相关的函数,不用理会,我们只看全英文的
10.quote()函数,可以帮我们把内容转为标准的url格式
from urllib.request import quote
a= '天空之城'
b= a.encode('gbk')
# 将汉字,用gbk格式编码,赋值给b
print(quote(b))
# quote()函数,可以帮我们把内容转为标准的url格式,作为网址的一部分打开
————————————————————
深度查询笔记
1.循环↓
2.字典和列表↓
List(列表)
list运算符 、内置函数、内置方法
运算符 | 含义 | 表达式 | 结果 |
+ | 列表合并在一起 | [‘a’, ‘b’, ‘c’] + [1, 2, 3] | [‘a’, ‘b’, ‘c’, 1, 2, 3] |
* | 列表重复 | [‘a’] * 3 | [‘a’, ‘a’, ‘a’] |
in | 是否为列表元素 | ‘a’ in [‘a’, ‘b’] | True |
list(列表)相关的内置函数
函数 | 含义 | 用法 |
len() | 计算列表长度,即计算列表中元素个数 | len([1,2,3]) #3 |
max() | 返回列表元素中最大值,列表元素必须是同一类型且可比较,比如都是数字型或都是字符串,如果类型不统一就会报错。 | max([‘a’,‘b’,‘c’]) #c |
min() | 返回列表元素中的最小值。元素类型要求跟max()一样。 | min([1,2,3]) #1 min([‘a’,‘b’,‘c’]) #a |
sun() | 计算列表所有元素的和,其元素类型必须是数值型的(整数、浮点数) | sum([1,2,3]) #6 |
sorted() | 返回一个排序的列表,但并不改变原列表。 | sorted([1,0,-1,4]) #[-1, 0, 1, 4] sorted([‘ab’,‘da’,‘c’,‘f’]) #[‘ab’, ‘c’, ‘da’, ‘f’] |
list() | 生成一个空列表,或把其它类型数据转换成list。 | list() #[] list(‘python’) #[‘p’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’] |
any() | 只要列表中有一个元素是True就返回True | any([0,1,’’]) #True |
all() | 只有列表所有元素为True才返回True | all([0,’’,‘2’]) #False all([1,‘a’,‘2’]) #True |
list(列表)的内置方法
方法 | 功能 | 示例 | 结果 |
append() | 把一个元素加到列表尾部 | L = [‘a’,‘b’,‘c’,‘a’,‘d’,‘a’];L.append(‘A’);print(L) | L变为[‘a’,‘b’,‘c’,‘a’,‘d’,‘a’,‘A’] |
insert() | 把一个元素插到列表指定位置 | L = [‘a’,‘b’,‘c’,‘a’,‘d’,‘a’];L.insert(1,‘A’);print(L) | L变为[‘a’,‘A’,‘b’,‘c’,‘a’,‘d’,‘a’] |
remove() | 删除列表中某个值的第一个匹配项 | L = [‘a’,‘b’,‘c’,‘a’,‘d’,‘a’];L.remove(‘a’);print(L) | L变为[‘b’,‘c’,‘a’,‘d’,‘a’] |
pop() | 删除列表中指定位置元素(默认最后一个元素) | L = [‘a’,‘b’,‘c’,‘a’,‘d’,‘a’];L.pop(2);print(L) | L变为[‘a’,‘b’,‘a’,‘d’,‘a’] |
clear() | 清空列表 | L = [‘a’,‘b’,‘c’,‘a’,‘d’,‘a’];L.clear();print(L) | L变为[] |
index() | 从列表中找出某个值第一个匹配项的索引位置 | L = [‘a’,‘b’,‘c’,‘a’,‘d’,‘a’];print(L.index(‘a’)) | 0 |
count() | 统计某个元素在列表中出现的次数 | L = [‘a’,‘b’,‘c’,‘a’,‘d’,‘a’];print(L.count(‘a’)) | 3 |
sort() | 对原列表进行排序 | L = [‘a’,‘b’,‘c’,‘a’,‘d’,‘a’];L.sort();print(L) | L变为[‘a’,‘a’,‘a’,‘b’,‘c’,‘d’] |
reverse() | 将列表倒置 | L = [‘a’,‘b’,‘c’,‘a’,‘d’,‘a’];L.reverse();print(L) | L变为[‘a’,‘d’,‘a’,‘c’,‘b’,‘a’] |
——————————————————————————————
如何解题
九九乘法表:
for i in range (1,10):
for j in range(1,10):
print('%d X %d = %d' % (j,i,i*j),end = ' ')
if i==j: #当两个乘数一样地时候打印空值
print('')
break 停止for j in range(1,10)的循环,开始下一次命令
>1 X 1 = 1
>1 X 2 = 2 2 X 2 = 4
>1 X 3 = 3 2 X 3 = 6 3 X 3 = 9
>1 X 4 = 4 2 X 4 = 8 3 X 4 = 12 4 X 4 = 16
>1 X 5 = 5 2 X 5 = 10 3 X 5 = 15 4 X 5 = 20 5 X 5 = 25
>1 X 6 = 6 2 X 6 = 12 3 X 6 = 18 4 X 6 = 24 5 X 6 = 30 6 X 6 = 36
>1 X 7 = 7 2 X 7 = 14 3 X 7 = 21 4 X 7 = 28 5 X 7 = 35 6 X 7 = 42 7 X 7 = 49
>1 X 8 = 8 2 X 8 = 16 3 X 8 = 24 4 X 8 = 32 5 X 8 = 40 6 X 8 = 48 7 X 8 = 56 8 X 8 = 64
>1 X 9 = 9 2 X 9 = 18 3 X 9 = 27 4 X 9 = 36 5 X 9 = 45 6 X 9 = 54 7 X 9 = 63 8 X 9 = 72 9 X 9 = 81
解题思路:
1.分析问题,明确结果
先思考九九乘法表长什么样子,将其先勾勒出来 ,看得出来这是一个循环。
2.思考需要的知识 ,或搜索新知识
这个可以确定循环次数,用for…in…循环,用for i in range(1,10)
需要打印,用到print()函数
3.思考切入点
观察 每一行的开头都是1,每列呈递增关系,每行的第二个乘数不变,
每行的结尾的方程式的两个乘数都是一样 。都是1到9.
4.尝试解决问题的一部分
开始码代码:
for i in range (1,10):
for j in range(1,10):
print('%d X %d = %d' % (j,i,i*j))
if i==j:
print('')
break
''' 运行结果为:
1 X 1 = 1
1 X 2 = 2
2 X 2 = 4
1 X 3 = 3
2 X 3 = 6
3 X 3 = 9
...
发现新问题,如何让每一次循环print打印出来不换行呢?重复1-4步,需要用到新的知识。我网上搜了一下python print不换行,有个函数可以 end=’’,于是
for i in range (1,10):
for j in range(1,10):
print('%d X %d = %d' % (j,i,i*j),end='')
if i==j:
print('')
break
成功打印出结果 ,然后将新知识做在笔记上。