动易 网站顶部导航 sitefactory,养育成本,北京怎样建设公司网站,长沙手机网站设计#x1f428;#x1f428;#x1f428;宝子们好呀 ~ 我来更新欠大家的python笔记了#xff0c;从这一篇开始我们来学下python#xff0c;当然#xff0c;如果只是想应对机试并且应试语言以C和C为主#xff0c;那么大家对python了解一点就好#xff0c;重点可以看高分篇… 宝子们好呀 ~ 我来更新欠大家的python笔记了从这一篇开始我们来学下python当然如果只是想应对机试并且应试语言以C和C为主那么大家对python了解一点就好重点可以看高分篇、满分篇和大数问题python合集就好本部分建议学有余力的同学或者想多了解一些python的同学来看哦 ~ 话不多说上干货 ~ ( •̀ ω •́ )✧ 目录
1输出格式问题
数字对齐
输出间隔问题
global与nonlocal
format自适应小数点
format用法
1、基本用法
2、进阶用法
3、多个格式化
如何print
2字符类
ASCII码转换
字符串转ASCII码
ASCII码转字符串
字母大小写转换
字符检测函数isalpha()
去除字符串的空格
去除字符串开头或者结尾的空格
去除字符串开头的空格
去除字符串结尾的空格
去除全部空格
字符串和数组
3列表类
注意事项
enumerate循环语句
index获取指定值元素的位置
insert插入元素
语法
参数
返回值
实例
删除元素
remove()
pop()
切片
clear和del
count统计元素出现次数
用数组实现栈
差分与前缀和方法 在正式开始之前我先提醒一下大家 若试题中有多组输入每组样例输入完后会有EOFerror所以我们在写python代码时要采用tryexcept的结构来防止阻塞
1输出格式问题
数字对齐 print(%-3s % str(j), end)#%-3s表示 ‘str(j)’占用三个字符向右对齐多余字符用空格
补充
输出间隔问题 #看清间隔大小此处无需加空格
for i,s in res_order: print(i,s)
#若加空格间隔明显偏大输出格式为input:
3
1 90
2 87
3 92
output: 2 87 1 90 3 92global与nonlocal global 指引用全局变量 nonlocal 只能用于嵌套函数中 a 0
def change_a(): global aa 1print(a) #1
def change(): b 0def c_b():nonlocal b b 1print(b) #1 #global b#b 1 # 报错:没有b这个全局变量format自适应小数点
price int(input())
discount 1
if price 1000 and price 2000: discount 0.95
elif price 2000 and price 3000: discount 0.9
elif price 3000 and price 5000: discount 0.85
elif price 5000:discount 0.8
pay discount*price
print(discount{},pay{:g}.format(discount,pay))##{:g}自动去掉小数点后的0format用法
1、基本用法
1不带编号即“{}”
2带数字编号可调换顺序即“{1}”、“{2}”
3带关键字即“{a}”、“{tom}” print({} {}.format(Hello ,world )) # 不带字段 Hello world print({0} {1}.format(Hello ,world )) # 带数字编号 Hello world print({0} {1} {0}.format(Hello ,world )) # 打乱顺序 Hello world Hello print({1} {1} {0}.format(Hello ,world )) world world Hello print({a} {b} {a}.format(aHello ,bworld )) # 带关键字 Hello world Hello 2、进阶用法
1 默认左对齐、 右对齐、 ^ 中间对齐、 只用于数字在小数点后进行补齐
2取位数“{:4s}”、{:.2f}等 print({} and {}.format(Hello ,world )) # 默认左对齐 Hello and world print({:10s} and {:10s}.format(Hello ,world )) # 取10位左对齐取10位右对齐 Hello and world print({:^10s} and {:^10s}.format(Hello ,world )) # 取10位中间对齐 Hello and world print({} is {:.2f}.format(1.123,1.123)) # 取2位小数 1.123 is 1.12 print({0} is {0:10.2f}.format(1.123)) # 取2位小数右对齐取10位 1.123 is 1.12 3、多个格式化
b - 二进制。将数字以2为基数进行输出。 print({0:b}.format(3)) 11 c - 字符。在打印之前将整数转换成对应的Unicode字符串。 print({:c}.format(20)) 4 d - 十进制整数。将数字以10为基数进行输出。 print({:d}.format(20)) 20 o - 八进制。将数字以8为基数进行输出。 print({:o}.format(20)) 24 x - 十六进制。将数字以16为基数进行输出9以上的位数用小写字母。 print({:x}.format(20)) 14 e - 幂符号。用科学计数法打印数字。用 e表示幂。 print({:e}.format(20)) 2.000000e01 g - 一般格式。将数值以fixed-point格式输出。当数值特别大的时候用幂形式打印。 print({:g}.format(20.1)) 20.1 n - 数字。当值为整数时和 d相同值为浮点数时和 g相同。不同的是它会根据区域设置插入数字分隔符。 print({:f}.format(20)) 20.000000 print({:n}.format(20)) 20 % - 百分数。将数值乘以100然后以fixed-point(f)格式打印值后面会有一个百分号。 print({:%}.format(20)) 2000.000000% 如何print
a 12
b 3
#非指定end时print默认end为换行符
print(%-3s % str(a), end !)
#“-”为左对齐“3”表示取3位不够则空格补位“%后的 str(a)对应于“%-3s”
print(%3s % str(b), end !)
#a: 12 !
#b: 3 !字符串输出 %s %10s——右对齐占位符10位 %-10s——左对齐占位符10位 %.2s——截取2位字符串 %10.2s——10位占位符截取两位字符串
print(%s % hello world) # 字符串输出
#hello worldprint(%20s % hello world) # 右对齐取20位不够则补位
#hello worldprint(%-20s % hello world) # 左对齐取20位不够则补位
#hello worldprint(%.2s % hello world) # 取2位
#heprint(%10.2s % hello world) # 右对齐取2位
#heprint(%-10.2s % hello world) # 左对齐取2位
#he2字符类
ASCII码转换
字符串转ASCII码
借助ord()函数实现ASCII码转化可以看作字符减运算 ord()是python自带的函数无需导入 print(ord(c)-ord(a)) 2 借助ord()函数不仅可以进行字符减运算也可以进行加运算但一般不这么用 print(ord(c)ord(a)) 196 ASCII码转字符串
直接借助python自带的chr()函数 print(chr(99)) c 字母大小写转换 upper()所有字母大写 lower()所有字母小写 capitalize()首字母大写其他字母小写 title()每个单词首字母大写其他小写
#encoding:UTF-8
msg www.BAIDU.com.123
print(msg.upper()) #upper()函数将所有字母都转换成大写
print(msg.lower()) #lower()函数将所有字母都转换成小写
print(msg.capitalize()) #capitalize()函数将首字母都转换成大写其余小写
print(msg.title()) #title()函数将每个单词的首字母都转换成大写其余小写WWW.BAIDU.COM.123
www.baidu.com.123
Www.baidu.com.123
Www.Baidu.Com.123字符检测函数isalpha()
isalpha() 方法用于检测指定字符串是否只由字母组成。如果字符串中至少有一个字符并且所有字符都是字母则返回 True否则返回 False。
#!/usr/bin/python
# codingutf-8str runoob;
print str.isalpha();str runoob菜鸟教程;
print str.isalpha();str this is string example....wow!!!;
print str.isalpha();
True
False
False去除字符串的空格
去除字符串开头或者结尾的空格 a a b c a.strip() a b c 去除字符串开头的空格 a a b c a.lstrip() a b c 去除字符串结尾的空格 a a b c a.rstrip() a b c 去除全部空格
replace a a b c a.replace( , ) abc split()join():
split()可以去除字符串中的空格并按空格分割成list。 a a b c b a.split() # 字符串按空格分割成列表 b [a, b, c] c .join(b) # 使用一个空字符串合成列表内容生成新的字符串 c abc # 快捷用法 a a b c .join(a.split()) abc 字符串和数组
数组转字符串
.join([a,b,c])#abc
字符串转数组
list(abc)#[a,b,c]
a b c.split()#[a,b,c]
3列表类
注意事项
列表的append使用的是引用传递即加入的是原数据地址对原数据进行pop等操作时同时也会改变使用append原数据的数据
解决方法利用list.copy() 或者使用list[:]代替list
a [1,2,3]
b [a] # [[1,2,3]]
c [3]
b.append(a)# [[1,2,3],[1,2,3]]
b.append(c) #[[1,2,3],[1,2,3],[3]]
a.pop()
c[4]
b # [[1,2],[1,2],[3]]
b.append(a.copy())# [[1,2],[1,2],[3],[1,2]]
b.append(a[:])# [[1,2],[1,2],[3],[1,2],[1,2]]
a.pop()
b # [[1,2],[1,2],[3],[1,2],[1,2]]在使用append时要注意当目标list之前有其他变量引用时值也会变化如
a[1]
ba
c a[:]
d a[2]
a.append(3)
# a [1,3]
# b [1,3]
# c [1]
# d [1,2]enumerate循环语句
while True: try:string list(input()) list1 []for i in string:if i.isalpha():list1.append(i)#大写全变为小写sort可满足 当字母相同不影响本来输入的数据的顺序list1.sort(keylambda c: c.lower())#此类循环可以得到index值for index, i in enumerate(string): if not i.isalpha():# 可通过insert直接插入得到结果无需另构建一个空字符串相加获得结果list1.insert(index, i) print(.join(list1))except:breakindex获取指定值元素的位置
#用法获取列表中值为val的索引值但只能寻找一维的list
#当列表中有多个相同val值时只返回最小的索引值
a [1,2,2,3]
val 2
a.index(val)
# 1insert插入元素
insert函数用于将指定对象插入列表的指定位置。
语法
insert()方法语法
list.insert(index, obj)
参数 index -- 对象 obj 需要插入的索引位置。 obj -- 要插入列表中的对象。
返回值
该方法没有返回值但会在列表指定位置插入对象。
实例
#!/usr/bin/python
aList [123, xyz, zara, abc]
aList.insert( 3, 2009)
print Final List : , aList#输出
#Final List : [123, xyz, zara, 2009, abc]注意下标是从0开始的
删除元素 remove():一次删除一个元素如果列表内有重复元素则删除第一个元素不存在时抛出异常 ValueError pop():删除一个指定的索引位置上的元素指定索引不存在则抛出异常IndexError 切片:一次至少删除一个元素 clear():清空列表 del:删除列表
remove()
指定值
1. 一次删除一个元素
2. 如果列表内有重复元素则删除第一个
3. 元素不存在时抛出异常ValueError。
lst [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(原列表为, lst)
#原列表为[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] lst.remove(5)
print(删除后的列表为, lst)
#删除后的列表为[0, 1, 2, 3, 4, 6, 7, 8, 9] pop()
删除一个指定的索引位置上的元素指定索引不存在则抛出异常IndexError
注意如果不指定参数则默认删除最后一个元素
lst [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(原列表为, lst)
#原列表为[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] lst.pop(5)
print(删除后的列表为, lst)
#删除后的列表为[0, 1, 2, 3, 4, 6, 7, 8, 9] 切片
# 切片的本意为截取原有列表中指定的的某一段或者说是复制指定的那一段并返回了新的列表
lst [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(原列表为, lst)
# 借助列表的添加方式原来添加的操作中使得lst[start,stop] lst1此为添加的元素
# 那么删除操作可以类似的使lst1为空列表那么原列表中指定一段的元素被空替代则完成删除
lst[1:3] [] # 将第1,2索引位的元素删除
print(删除后的列表为, lst)clear和del
clear为清空列表中的元素列表对象还存在
del直接删除了列表对象
lst [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(原列表为, lst)
lst.clear()
print(删除后的列表为, lst)lst [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(原列表为, lst)
del lst
print(删除后的列表为, lst)count统计元素出现次数
统计列表中某个元素出现的次数
#用法[ ].count(object)
[1,2,1,3].count(1)
# 2用数组实现栈 isEmpty 判断是否为空
push 添加新元素及最后被添加的元素为栈顶
pop 移出栈顶元素
peek 查看当前栈顶元素
size 计算数量class Stack:#创建一个栈def_init_(self):#初始为空栈self.items [] def isEmpty(self):return self.items [] def push(self, item):self.items.append(item) #添加新成员新成员为顶旧骨干为底 def pop(self):return self.items.pop() #移出顶底上位def peek(self): #查看当前顶部成员return self.items[-1]def size(self): #查看当前成员数量return len(self.items)差分与前缀和方法
适用题型某一个区间同时加减一个数
举例每次对某一区间的数进行加减操作最后查询某坐标的数 普通方法创建一个数组对输入的每个区间分别循环区间内的所有值加一。此方法容易理解但是容易超时。
优化方法
1、差分只对每个输入的起点和终点进行加减操作
2、前缀和最后统一只循环一次每次迭代当前数目加前一个数的大小即为最终的统计数
data []
check []
while True:Bi, Ei map(int, input().split()) if Bi Ei 0:breakdata.append((Ei, Bi))while True:bi, ei map(int, input().split()) if bi ei 0:breakcheck [i for i in range(bi, ei 1)]max_index max(data)[0]
wall [0 for i in range(max_index5)]# 记录差分 ,表示Bi到Ei区间存在值
for Ei, Bi in data: wall[Bi] 1wall[Ei1] - 1# 遍历一遍求前缀和
for i in range(1, len(wall)): wall[i] wall[i - 1]for v in check:print(wall[v])好啦今天我们先学到这里学完的同学们都太棒了我们下一篇见 ~
有什么问题我们随时评论区见哦 ~