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

news2024/11/27 20:22:38

🐨🐨🐨宝子们好呀 ~ 我来更新欠大家的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])

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pikachu靶场CSRF-get测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、抓包使用burp生成csrf脚本 四、源代码分析 五、结论 一、测试环境 1、系统环境 渗透机&#xff1a;本机(127.0.0.1) 靶 机&#xff1a;本机(127.0.0.1) 2、使用工具/软件 Burp sui…

【Trick】在vscode上配置copilot时,输出端出现Invalid copilot token: missing token: 403

今天心血来潮想要给vscode配置一个copilot&#xff0c;正好上学期在github上通过教育邮箱实现了学生认证&#xff0c;可以免费使用copilot服务&#xff08;bushi&#xff09;。 首先是按照官网&#xff08;Getting code suggestions in your IDE with GitHub Copilot - GitHub…

机器学习与金融风控项目篇-day01-风控业务

一. 整体项目介绍 1.风控业务和风控报表 零售金融产品相关的指标风控建模流程 2.特征工程 特征构造特征筛选 3.评分卡模型构建 逻辑回归集成学习 XGBoost LightGBM模型评估 4.样本不均衡问题/异常点检测 二. 信贷与风控介绍 信贷业务 信贷业务&#xff0c;就是贷款业务&#x…

桃子叶片病害分类检测数据集(猫脸码客 第221期)

桃子叶片病害分类检测数据集 一、引言 桃子作为世界上广泛种植的果树之一&#xff0c;其叶片的健康状况直接关系到果实的产量和品质。然而&#xff0c;桃子叶片易受多种病害的侵袭&#xff0c;这些病害不仅影响叶片的光合作用&#xff0c;还可能导致果实减产、品质下降&#…

XPM_CDC_SYNC_RST

免责声明&#xff1a;本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下&#xff0c;作者不对因使用本文内容而导致的任何直接或间接损失承担责任&#xff0c;包括但不限于数据丢失、业务中断或其他经济…

基于SSM的医院药品管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

Axure垂直菜单展开与折叠

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;Axure垂直菜单展开与折叠 主要内容&#xff1a;垂直菜单单击实现展开/折叠&#xff0c;点击各菜单项显示选中效果 应用场景&#xff1a;后台菜单设…

靠卡车赚钱,小马智行等待Robotaxi的春天

文&#xff5c;刘俊宏 编&#xff5c;王一粟 继文远知行之后&#xff0c;又一家L4无人驾驶公司也准备上市。 10月18日&#xff0c;无人驾驶服务商小马智行向美国SEC&#xff08;证券交易委员会&#xff09;提交了招股书。继百度、Waymo、特斯拉之后&#xff0c;根据招股书的…

【EPLAN 2.9】清理Data文件夹的小工具

背景&#xff1a; 随着EPLAN不断使用“C:\Users\Public\EPLAN\Data”文件夹会越来越大&#xff08;EPLAN2.9部件管理中删除部件不会去删除文件夹内相关资源文件&#xff09;&#xff0c;本工具在于清理文件夹内未被EPLAN关联的宏、图片、文档。仅支持EPLAN 2.9 代码&#xff…

[环境配置]macOS上怎么查看vscode的commit id

macOS的commit id和windows上有点不一样&#xff0c;windows可以在帮助-关于查看 macOS则需要再左边第一个查看

(AtCoder Beginner Contest 375)C - Spiral Rotation

&#xff08;AtCoder Beginner Contest 375&#xff09;C - Spiral Rotation 题目大意 给定二维数组 a [ n ] [ n ] , n m o d 2 0 a[n][n],n \mod 20 a[n][n],nmod20 执行 i 1 , 2 , . . . i1,2,... i1,2,... n / 2 n/2 n/2 操作 每次操作对于 ∀ x , y ∈ [ i , n 1 − …

使用 JAX 进行 LLM 分布式监督微调

LLM distributed supervised fine-tuning with JAX — ROCm Blogs (amd.com) 24年1月25日&#xff0c;Douglas Jia 发布在AMD ROCm 博客上的文章。 在这篇文章中&#xff0c;我们回顾了使用 JAX 对基于双向编码器表示&#xff08;BERT&#xff09;的大型语言模型&#xff08;LL…

bash之基本运算符

一.算术运算符 vim test.sh #!/bin/basha10 b20valexpr $a $b echo "a b : $val"valexpr $a - $b echo "a - b : $val"valexpr $a \* $b echo "a * b : $val"valexpr $b / $a echo "b / a : $val"valexpr $b % $a echo "b % a …

pikachu靶场SSRF-curl测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、实现ssrf攻击 四、源代码分析 五、结论 一、测试环境 1、系统环境 渗透机&#xff1a;本机(127.0.0.1) 靶 机&#xff1a;本机(127.0.0.1) 2、使用工具/软件 测试网址&#xff1a;…

Redis 常用指令详解

Redis是一款开源的、高性能的键值对存储数据库&#xff0c;常用于缓存、会话存储以及其他需要快速访问的数据场景。本文将介绍Redis的一些常用指令&#xff0c;并通过代码示例进行说明。 一、连接操作指令 1. 连接 Redis 服务器 ./redis-cli -h 127.0.0.1 -p 63792. 认证&a…

1.QT概述及C++基础

QT概述及C基础 1.简介2.QT安装3.QT_Creator的基本使用4.C基础 1.简介 概述 Qt 是一个跨平台的应用程序和用户界面框架&#xff0c;用于开发图形用户界面&#xff08;GUI&#xff09;应用程序以及命令行工具。它最初由挪威的 Trolltech &#xff08;奇趣科技&#xff09;公司开发…

MySQL程序介绍<一>

目录 MySQL程序简介 mysqld - MySQL 服务器 ​编辑 mysql - MySQL 命令⾏客⼾端 MySQL程序简介 1.MySQL安装完成通常会包含如下程序&#xff1a; Linux系统程序⼀般在 /usr/bin⽬录下&#xff0c;可以通过命令查看 windows系统⽬录&#xff1a; 你的安装路径\MySQL Server…

Redis JSON介绍和命令大全

Redis JSON介绍和命令大全 Redis JSON先说说JSON是什么再说说JSON Path先推荐两个网站JSONPath JAVA clents Redis JSON 安装内存json命令语法命令url命令解释JSON.ARRAPPENDJSON.ARRINDEXJSON.ARRINSERTJSON.ARRLENJSON.ARRPOPJSON.ARRTRIMJSON.CLEARJSON.DEBUG MEMORYJSON.DE…

Java 入门基础篇15 - java构造方法以及认识新的关键字

一 今日目标 构造方法static关键字代码块math类package关键字import关键字 二 构造方法概述 2.1 构造方法描述 构造方法是一个特殊方法&#xff0c;作用是创建对象&#xff0c;对对象进行初始化。 ​ 如&#xff1a; 对对象中的成员进行初始化值 2.1 构造方法的特征 1、方…

C/C++每日一练:编写一个栈数据结构

通过编写栈&#xff08;Stack&#xff09;数据结构&#xff0c;提升对基本数据结构的理解和运用。这也是掌握更复杂数据结构与算法的基础。栈是计算机科学中的一个重要概念&#xff0c;经常出现在许多算法和应用中。 栈&#xff08;Stack&#xff09; 栈是一种后进先出&#x…