保研考研机试攻略:python笔记(1)

🐨🐨🐨宝子们好呀 ~ 我来更新欠大家的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代码时要采用try+except的结构来防止阻塞!

🐨🐨🐨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   92
'''

🐼globalnonlocal

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}自动去掉小数点后的0

🐼format用法

🐶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(a='Hello ',b='world '))  # 带关键字

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.000000e+01

'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位
#he

🐨🐨🐨2字符类

🐼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 
# coding=utf-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] 
b=a
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(key=lambda c: c.lower())#此类循环可以得到index值for index, i in enumerate(string): if not i.isalpha():# 可通过insert直接插入得到结果,无需另构建一个空字符串相加获得结果list1.insert(index, i) print(''.join(list1))except:break

🐼index获取指定值元素的位置

#用法,获取列表中值为val的索引值,但只能寻找一维的list 
#当列表中有多个相同val值时,只返回最小的索引值
a = [1,2,2,3] 
val = 2
a.index(val)
# 1

🐼insert插入元素

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_index+5)]# 记录差分 ,表示Bi到Ei区间存在值
for Ei, Bi in data: wall[Bi] += 1wall[Ei+1] -= 1# 遍历一遍,求前缀和
for i in range(1, len(wall)): wall[i] += wall[i - 1]for v in check:print(wall[v])

好啦,今天我们先学到这里,学完的同学们都太棒了,我们下一篇见 ~ 👋👋👋

有什么问题我们随时评论区见哦 ~ 🌹🌹🌹

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/458267.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

易基因:Nat Commun:ATAC-seq等揭示恒河猴大脑高分辨率解剖区域的转录组和开放染色质图谱

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 恒河猴是神经科学研究中常用的模型动物&#xff0c;其大脑结构和功能与人类大脑相似。大脑中复杂的遗传网络是灵长类动物行为、认知和情感的基础&#xff0c;一直是神经科学的核心。大脑…

禾川SV-X2E A伺服驱动器参数设置——脉冲型

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff01;人工智能学习网站 前言&#xff1a; 大家好&#xff0c;我是上位机马工&#xff0c;硕士毕业4年年入40万&#xff0c;目前在一家自动化公司担任…

【Android】基础回顾--四大组件

1. 四大组件是什么&#xff1f; 四大组件&#xff1a;Activity、Service、BroadcastReceiver、ContentProvider。 2. 四大组件的生命周期和简单用法 Activity&#xff1a; 特殊情况下的生命周期&#xff1a; 典型的生命周期好像没什么可说的&#xff0c;主要说一下特殊情况…

基于Datawhale开源量化投资学习指南(11):LightGBM在量化选股中的优化与实战

1. 概述 在前几篇文章中&#xff0c;我们初步探讨了如何通过LightGBM模型进行量化选股&#xff0c;并进行了一些简单的特征工程和模型训练。在这一篇文章中&#xff0c;我们将进一步深入&#xff0c;通过优化超参数和实现交叉验证来提高模型的效果&#xff0c;并最终通过回测分…

C++ | Leetcode C++题解之第516题最长回文子序列

题目&#xff1a; 题解&#xff1a; class Solution { public:int longestPalindromeSubseq(string s) {int n s.length();vector<vector<int>> dp(n, vector<int>(n));for (int i n - 1; i > 0; i--) {dp[i][i] 1;char c1 s[i];for (int j i 1; j…

2-135 基于matlab的有限差分法计算电位分布

基于matlab的有限差分法计算电位分布&#xff0c;设置目标尺寸的矩形区域&#xff0c;设置矩形区域内的网格数量&#xff0c;根据网格位置在区域内设置电位&#xff0c;实现电位分布计算。程序已调通&#xff0c;可直接运行。 下载源程序请点链接&#xff1a;2-135 基于matlab…

微信小程序的日期区间选择组件的封装和使用

组件化开发是一种将大型软件系统分解为更小、更易于管理和复用的独立模块或组件的方法。这种方法在现代软件开发中越来越受到重视&#xff0c;尤其是在前端开发领域。微信小程序的日期区间选择组件的使用 wxml 代码 <view><view bind:tap"chooseData">…

【Redis】内存淘汰策略

文章目录 什么是内存淘汰策略设置Redis最大内存执行内存淘汰策略的流程Redis的八大内存淘汰策略深入源码进行理解内存淘汰策略流程 什么是内存淘汰策略 Redis内存淘汰策略是指当Redis的内存使用达到其配置的最大内存限制&#xff08;maxmemory&#xff09;时&#xff0c;Redis…

论文笔记(五十)Segmentation-driven 6D Object Pose Estimation

Segmentation-driven 6D Object Pose Estimation 文章概括摘要1. 引言2. 相关工作3. 方法3.1 网络架构3.2 分割流3.3 回归流3.4 推理策略 4. 实验4.1 评估 Occluded-LINEMOD4.1.1 与最先进技术的比较4.1.2 不同融合策略的比较4.1.3 与人体姿态方法的比较 4.2 在YCB-Video上的评…

uniapp使用easyinput文本框显示输入的字数和限制的字数

uniapp使用easyinput文本框显示输入的字数和限制的字数 先上效果图&#xff1a; 整体代码如下&#xff1a; <template><view class"nameInfoContent"><uni-easyinput class"uni-mt-5" suffixIcon"checkmarkempty" v-model&quo…

【MyBatis源码】SqlSessionFactoryBuilder源码分析

文章目录 概述类结构从 InputStream 创建 SqlSessionFactoryXMLConfigBuilder构建ConfigurationXMLConfigBuilder初始化方法parse()方法parseConfiguration属性&#xff08;properties&#xff09; 概述 SqlSessionFactory 是 MyBatis 的核心接口之一&#xff0c;提供创建 Sql…

vue通过JSON文件生成WPML文件源码

可以使用封装的json解析器进行JSON数据获取&#xff0c;读取点的经度、维度、高程等数据&#xff0c;再使用对应的WPML文件生成函数使用该源码下载WPML文件&#xff08;固定WPML生成&#xff1a;js模板式生成大疆上云wpml文件&#xff08;含详细注释&#xff0c;已封装成函数&a…

(7) cuda异常处理

文章目录 上节概要异常处理代码 上节概要 上一节 block_width 64的时候&#xff0c;64644096 > 1024&#xff08;一个block里面最多只能有1024个线程&#xff0c;所以这里计算会有问题&#xff09; 异常处理 __FILE__: 编译器内部定义的一个宏。表示的是当前文件的文件…

【C++单调栈 贡献法】907. 子数组的最小值之和|1975

本文涉及的基础知识点 C单调栈 LeetCode907. 子数组的最小值之和 给定一个整数数组 arr&#xff0c;找到 min(b) 的总和&#xff0c;其中 b 的范围为 arr 的每个&#xff08;连续&#xff09;子数组。 由于答案可能很大&#xff0c;因此 返回答案模 109 7 。 示例 1&#x…

项目:Boost 搜索引擎

项目&#xff1a;Boost 搜索引擎 1、项目背景 公司&#xff1a;百度、360、搜狗、谷歌 …站内搜索&#xff1a;搜索的数据更垂直&#xff08;相关&#xff09;&#xff0c;数据量小 2、整体框架 3、技术栈和项目环境 技术栈&#xff1a;C/C C11&#xff0c;STL&#xff0c;jso…

error Unexpected mutation of “xxxxx“ prop

错误是在进行 eslint 检查的时候触发的&#xff0c;这个错误的原因是我们在子组件中改变了父组件传递过来的 props 解决方法一&#xff1a; 不改变父组件传递过来的 props&#xff0c;如果需要改变父组件传递过来的值&#xff0c;可以使用 defineModel() 进行接收值&#xff…

【零售和消费品&软件包】快递包装类型检测系统源码&数据集全套:改进yolo11-HSPAN

改进yolo11-EfficientHead等200全套创新点大全&#xff1a;快递包装类型检测系统源码&#xff06;数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.24 注意&#xff1a;由于项目一直在更新迭代&#xff0c;上面“1.图片效果展示”和“2.视频效果展示”展示的系统…

STM32第15章 RCC-使用HSE/HSI配置时钟

时间:2024.10.21-10.23 参考资料: 《零死角玩转STM32》“RCC-使用HSE/HIS配置时钟”章节 TIPS: 从前面的历程中我们知道,程序在启动的时候会执行汇编文件,汇编文件里会调用System_Init(固件库编程的函数),它里面会把时钟初始化成72M,因此前面我们在用固件库写程序的…

MSR寄存器独有的还是共享的

英特尔白皮书Volume 4: Model-Specific Registers 这一章列出了不同英特尔处理器系列的 MSR&#xff08;模型特定寄存器&#xff09;。所有列出的 MSR 都可以使用 RDMSR 和 WRMSR 指令进行读取和写入。MSR 的作用域定义了访问相同 MSR 的处理器集合&#xff0c;具体如下&#x…