保研考研机试攻略: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 a
    a =1
    print(a) #1
def change(): 
    b = 0
    def c_b():
        nonlocal b b =1
        print(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 world

print('%20s' % 'hello world')  # 右对齐,取20位,不够则补位
#hello world

print('%-20s' % 'hello world')  # 左对齐,取20位,不够则补位
#hello world

print('%.2s' % 'hello world')  # 取2位
#he

print('%10.2s' % 'hello world')  # 右对齐,取2位
#he

print('%-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-8

str = "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:
        break
    data.append((Ei, Bi))

while True:
    bi, ei = map(int, input().split()) 
    if bi == ei == 0:
        break
    check += [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] += 1
    wall[Ei+1] -= 1

# 遍历一遍,求前缀和
for i in range(1, len(wall)): 
    wall[i] += wall[i - 1]

for v in check:
    print(wall[v])

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】——numpy教程

文章目录 1.numpy简介2.初始化numpy3.ndarry的使用3.1numpy的属性3.2numpy的形状3.3ndarray的类型 4numpy生成数组的方法4.1生成0和1数组4.2从现有的数组生成4.3生成固定范围的数组4.4生成随机数组 5.数组的索引、切片6.数组的形状修改7.数组的类型修改8.数组的去重9.ndarray的…

接口测试(七)jmeter——参数化(RandomString函数)

一、RandomString函数 需求&#xff1a;模拟10个用户注册 1. 【工具】–>【函数助手对话框】 2. 选择RandomString函数 假设手机号码前3位设置为固定数值136&#xff0c;后8位可用RandomString函数随机产生数值 ① Random string length&#xff1a;8&#xff08;随机长度…

记录element-ui改造select显示为table,并支持多查询条件

最近遇到的一个需求 &#xff0c; 很有趣&#xff0c;是需要一个select组件&#xff0c;要求显示工号&#xff0c;员工姓名&#xff0c;以及区域 三个字段&#xff0c;并且要支持三个字段的查询。显然element原生的组件不适用&#xff0c;这时候我们需要改造一下&#xff0c;把…

基于大数据 Python Vue 美食推荐可视化系统(源码+LW+部署讲解+数据库)

&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 会持续一直更新下去 有问必答 一键收藏关注不迷路 源码获取&#xff1a;https://pan.baidu.com/s/1aRpOv3f2sdtVYOogQjb8jg?pwdjf1d 提取码: jf1d &#…

Java后端面试题:Java基础篇

目录 Java基础 1.请你说说Java中基本数据类型的bit长度&#xff1f; 2.switch支持哪些数据类型&#xff1f;支持long么&#xff1f; 3.讲一下常见编码方式&#xff1f; 4.char能不能存储中文&#xff1f; 5.为什么数组索引从0开始呢&#xff1f;假如从1开始不行吗&#xf…

w003基于Springboot的图书个性化推荐系统的设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…

Git 课程任务

破冰和创建项目 https://github.com/WangXiuhao/loveailab

CORE 安全与身份认证《1》 UseRouting 、UseEndpoints

认证、授权、确权与鉴权 路由 web的请求到达后端服务时&#xff0c;controller(控制器)会处理传入的http请求并响应用户操作&#xff0c; 请求的url会被映射到控制器的操作方法上。 此映射过程由应用程序中定义的路由规则完成。 》》》net core 在中间件中的鉴权授权的位置一…

rtp协议:rtcp包格式和传输间隔

RTP Control Protocol -- RTCP-rtp控制协议 实时传输控制协议&#xff08;RTCP&#xff09;基于对会话中的所有参与者定期传输控制包&#xff0c;使用与数据包相同的分发机制。底层协议必须提供数据包和控制包的多路复用&#xff0c;例如使用UDP时使用不同的端口号。RTCP执行四…

Golang | Leetcode Golang题解之第501题二叉搜索树中的众数

题目&#xff1a; 题解&#xff1a; func findMode(root *TreeNode) (answer []int) {var base, count, maxCount intupdate : func(x int) {if x base {count} else {base, count x, 1}if count maxCount {answer append(answer, base)} else if count > maxCount {ma…

一站式学习 Shell 脚本语法与编程技巧,踏出自动化的第一步

文章目录 1. 初识 Shell 解释器1.1 Shell 类型1.2 Shell 的父子关系 2. 编写第一个 Shell 脚本3. Shell 脚本语法3.1 脚本格式3.2 注释3.2.1 单行注释3.2.2 多行注释 3.3 Shell 变量3.3.1 系统预定义变量&#xff08;环境变量&#xff09;printenv 查看所有环境变量set 查看所有…

RK3568平台(基础篇)预编译命令原理

一.宏定义(#define)是什么 #define 可以将一对文本进行替换,在编译器读到需要被替换的文本的时候,会将这些文本全部替换成我们给定的文本。 如下是一个宏的定义: #define A 100 二.预编译 预处理命令 #if、#endif、#undef、#ifdef、#else、#elif 在接触#if、#undef这…

图片尺寸怎样能快速修改?图片改尺寸的4款在线工具

图片怎么压缩调整大小呢&#xff1f;现在的图片随着质量或者尺寸都会比较大&#xff0c;在很多平台上传时会导致无法使用&#xff0c;需要按照要求调整图片大小后才能够正常使用&#xff0c;那么如何操作能够快速修改图片大小呢&#xff1f;下面来给大家分享图片改大小的4款在线…

使用virtualenv/Anaconda/Miniconda创建python虚拟环境

自带venv 免安装直接使用 虚拟环境是创建一种隔离的工作空间&#xff0c;在该工作空间中可以安装不同的库&#xff0c;而不影响其他的项目。其中&#xff0c;python自带的venv&#xff0c;就可以很好的创建虚拟环境了。 # 创建虚拟环境 python -m venv venv# windows系统激活…

Linux -- 共享内存(2)

目录 命令 ipcs -m &#xff1a; 命令 ipcrm -m shmid&#xff1a; 共享内存的通信&#xff1a; 为什么共享内存更高效&#xff1f; 代码&#xff1a; ShmClient.cc&#xff1a; ShmServer.cc&#xff1a; 结果&#xff1a; 如何让共享内存实现同步&#xff1f; 代码&a…

119.WEB渗透测试-信息收集-ARL(10)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;118.WEB渗透测试-信息收集-ARL&#xff08;9&#xff09; 释放完成后&#xff0c;点击创…

[mysql]子查询的概述和分类及单行子查询

子查询引入 查询的基本结构已经给大家了,子查询里面也是有一些新的内容,子查询其实就是在查询中嵌套另一个查询,叫嵌套查询可能大家更容易理解一点..,类似与FOR循环和FOR循环的嵌套,这一章是我们查询的最难的部分,大家 难度是查询的顶峰,多表查询和子查询是非常重要,SQL优化里…

2024年AR游戏市场分析:创业指南

自从2016年《Pokmon GO》横空出世以来,增强现实(AR)游戏已经成为移动游戏领域的一大亮点。然而,随着时间的推移,AR游戏市场是否仍然充满机遇?本文将对当前市场上成功的AR游戏进行分析,并为有意进入这一领域的创业者提供一些启示。 一、市场领导者分析 《Pokmon GO》自…

kotlin实现viewpager

说明:kotlin tablayout viewpager adapter实现滑动界面 效果图 step1: package com.example.flushfragmentdemoimport androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.fragment.app.Fragment import androidx.viewpager2.adapter.…

用哪种建站程序做谷歌SEO更容易?

做网站很容易&#xff0c;但做一个能带来流量和订单的网站就没那么简单了。尤其是在谷歌SEO优化方面&#xff0c;不同的建站程序对SEO的支持程度也不同。在这方面&#xff0c;WordPress和Shopify无疑是最佳选择。 WordPress作为一个内容管理系统&#xff08;CMS&#xff09;&am…