草庐IT

蓝桥杯python组最后几天冲刺——超级实用并且详细的python技巧

晚风时亦鹿 2023-05-05 原文

蓝桥杯冲刺

一、时间问题

1.日期的用法(案例)

strftime() 函数接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定.
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身


import datetime
year,month, day=map(int,input().split())
date01=datetime.date(year,month,day)
print(date01.strftime("%j"))#strftime %j 输出某一年为一年中的第几天 包括区分闰年平年in

二、切片运算

1.切片函数的使用(暴力破解案例+优化)


#切片运算
#暴力
m=input()
res=[m[2:]]
for i in res:
    print(i,end=" ")

优化运算
注意切片位置
x=int(input())#字符串总数
m=input()#输入字符串
h=int(input())#切片-1
res=m[h-1:]
print(res)


    

2.切片使用

x=list(map(int,input().split()))
x=x[::-1]
for i in x:
    print(i,end=" ")
切片的其他使用方式:
x=list(map(int,input().split()))
x=x[::-1]
for i in x:
    print(i,end=" ")


m=int(input())#10
x=list(map(int,input().split()))
n=int(input())#2
#前进多少位置就切片截取位置然后进行拼接 例如取3 -3:+:7 注意不是-3:7
num=(x[-n:]+x[:m-n])#-2:+:8 +号是拼接 两个字符串类型
for i in range(len(num)):
   print(num[i],end=' ')

x=list(map(int,input().split()))
h=(x[-2:]+x[:8])
for i in h:
    print(i,end=" ")

三、数值交换

1.双双赋值相等(冒泡+暴力+交换)

冒泡排序
ls=list(map(int,input().split()))
for i in range(len(ls)):
    for j in range(i):
        if ls[i] <=ls[j]:
            t=ls[i]
            ls[i]=ls[j]
            ls[j]=t
for i in ls:
    print(i,end=" ")


ls=list(map(int,input().split()))
h=max(ls)
s=min(ls)
ls[0]=s
ls[-1]=h
ls[1]=2
ls[-2]=9
for i in ls:
    print(i,end=" ")


交换
ls=list(map(int,input().split()))
for i in range(len(ls)):
    if ls[i]==min(ls):
        ls[i],ls[0]=ls[0],ls[i]
    if ls[i]==max(ls):
        ls[i],ls[-1]=ls[-1],ls[i]
for i in ls:
    print(i,end=" ")

两数交换
a,b=input().split()
a,b=b,a
print(a,b)

四、算法模板+函数的使用(详细)

a=str(input())#字符串需要引号才能转为字符形式
res=[]
for i in a:
    i=ord(i)#122
    if i in range(97,122):
        res.append(chr(i+1))
    elif i==122:
        res.append(chr(97))
    else:
        res.append(chr(i))
for x in res:
    print(x,end=" ")

1.循环输入模板

循环输入模板
x=float(input())
for i in range(1,4):
    for i in range(i):
        print(f"{x:.2f}",end=" ")#在.前面加上数字为空格
    print()

x=float(input())
for i in range(1,4):
    for j in range(i):
        print(f"{x:.2f}",end=" ")#加个f 相当于scala里面加个s""
    print()

2.递归函数的使用(详细)

def LEAP_YEAR(y):
    if year % 400==0 and year % 4 ==0:
        print("L")
    else:
        print("N")
year=int(input())
LEAP_YEAR(year)



def person_pratice(n):
    ans=0#判断字母 包括大小写
    result=0#判断数字
    space=0#判断空格
    res=0#判断符号的个数
    for i in n:
        if i.isalpha():
            ans+=1
        elif i.isdigit():
            result+=1
        elif i.isspace():
            space+=1
        else:
            res+=1
    return ans,result,space,res



def person_pratice(n):
    s=['a','e','i','o','u']
    for i in s:
        if i in n:
            print(i,end="")
n=input()
person_pratice(n)


def person(h,s):#输入的参数
    h=h+s#拼接字符串
    print(h)
#类型都为字符串
h=input()
s=input()
person(h,s)


def prime(n):
    if n<2:
        print("not prime")
    else:
        for i in range(2,n):
            if n % i  == 0:
                print("not prime")
                break
        else:
            print("prime")

n=int(input())
prime(n)

3.Math函数的使用

import math
a,b,c=map(int,input().split())#如果又要实现对整数进行每数字空一格 那么map().split() 映射
s=(a+b+c)/2#浮点型
area=math.sqrt((s*(s-a)*(s-b)*(s-c)))
print("{:.3f}" .format(area))#.format 的前面用法是:.

4.判断字符字母空格的个数

I.函数形式

x=input()
ans=0#判断字母 包括大小写
result=0#判断数字
space=0#判断空格
res=0#判断符号的个数
for i in x:
    if i.isdigit():
        result+=1
    elif i.isalpha():
        ans+=1
    elif i.isspace():
        space+=1
    else:
        res+=1
print(ans,result,space,res)

II.Def函数形式

def person_pratice(n):
    ans=0#判断字母 包括大小写
    result=0#判断数字
    space=0#判断空格
    res=0#判断符号的个数
    for i in n:
        if i.isalpha():
            ans+=1
        elif i.isdigit():
            result+=1
        elif i.isspace():
            space+=1
        else:
            res+=1
    return ans,result,space,res

def main():
    result1=person_pratice(input())
    for i in result1:#对结果打印
        print(i,end=" ")
main()

五、 矩阵的输入和用法

1.矩阵的定义

定义3*3的数组

arr=[[0 for i in range(3)] for j in range(3)]
for i in range(len(arr)):
    arr[i]=input().split()#对每一行进行输出

for i in range(3):
    for j in range(i):
        t=arr[i][j]#暂时存储
        arr[i][j]=arr[j][i]#行列交换
        arr[j][i] = t

for i in range(3):
    for j in range(3):
        print(arr[i][j],end=" ")
    print()
#定义 3*3二维数组
arr=[[0 for i in range(3)] for j in range(3)]#设置每个参数值都为0
for i in range(3):#对每一行的数组进行输出
    arr[i]=input().split()

#类似于冒泡排序  行列互换
for i in range(3):#对原来的数据进行置换
    for j in range(i):#最大值为1
        t=arr[i][j] #找一个可以暂存的对象
        arr[i][j]=arr[j][i]
        arr[j][i]=t
for i in range(3):#输出
    for j in range(3):
        print(arr[i][j],end=" ")
    print()

2.矩阵的用法

#首先满足3 * 3矩阵对角线
ls=[input().split(), input().split(),input().split()]
cols=len(ls)
rows=len(ls)
#先行后列
res=0
ans=0
for i in range(cols):
    for j in range(rows):
        #当i和j相等重合的时候等于主对角线
        if i==j:
            res+=int(ls[i][j])
        #当i和j相等+2的时候等于副对角线
        if  i+j==2:
            ans+=int(ls[i][j])
print(res, ans)





3 * 3  矩阵li1转化成一个数组列表,且使该数组中仅仅包含偶数:
li1=[
     [1,2,3],
     [4,5,6],
     [7,8,9]
     ]
print([item2 for item1 in li1 for item2 in item1 if item2 %2==0])#最开头的相当于循环里面的append 追加到列表

li2=[]
for item1 in li1:
    for item2 in item1:
        if item2 % 2 == 0:
            li2.append(item2)
print(li2)





ls=[input().split(), input().split(), input().split()]
sum1=sum2=0
for i in range(3):#0 1 2 行
    for j in range(3):#0 1 2 列
        if(i==j):
            sum1+=int(ls[i][j])
        if(i+j==2):
            sum2+=int(ls[i][j])
print(sum1,sum2)
#0 2=2 1 1=2 2 0=2

3.砝码重量(案例)

n = int(input())
li = list(map(int,input().split()))#给出n个砝码的重量

weigh = sum(li) #对列表li求和,得出砝码能称出的最大重量weigh=10

#建立二维数组,dp[i][j]==1表示当有列表li中前i个砝码时可以称出重量j
dp = [[0 for i in range(weigh+1)] for j in range(n+1)]

#初始状态:当只有砝码1时,可以称出重量0和第1个砝码的重量li[1]
dp[1][0] = 1
dp[1][li[0]]=1

#如果dp[i-1][j]==1,也就是前i-1个砝码可以称出重量j,那么:
#1.前i个砝码肯定也能称出j,所以dp[i][j]=1(不把第i个砝码放进天平)
#2.有i个砝码,把第i个砝码放进天平
#把第i个砝码放进天平重的一端,测得重量为原本重量j加上第i个砝码的重量li[i-1]
#把第i个砝码放进天平轻的一端,测得重量为原本重量j和第i个砝码的重量li[i-1]相减的绝对值
for i in range(2,n+1):
    for j in range(weigh+1):
        if dp[i-1][j]:
            dp[i][j] = 1
            dp[i][j+li[i-1]] = 1
            dp[i][abs(j-li[i-1])] = 1

#减去测得重量为0的情况
print(sum(dp[n])-1)

六、排序

python中sort函数用法是pairs.sort(key=lo),将整个pairs迭代后每一次迭代的值都会传入lo。

1、为什么xy_cmp函数返回值是1,0,-1。
xy_cmp传入的x和y参数是li相邻的两个元素,它们在进入函数前被转为了str;函数中使用x+y与y+x进行比较,这里进行的是字符串形式的比较,比如"32"+“94”=“3294”,“94”+“32”=“9432”,用"3294"<"9432"进行比较,结果会是True,这样就会返回1

xy_cmp函数返回的1,0,-1三个数字有什么意义?

这个返回的数字作为cmp_to_key函数的参数,

次函数的参数如果为正数,则会交换li相邻两元素,其他情况则不会交换

另外系统能自动了解x,y分别是指代列表中的两个对象

x与y是li列表中相邻两元素

a.sort是对a进行排序,返回None,sorted(a)返回一个排好序的副本,a不变。

2、min抓一个数,放进一个新列表,然后删除这个数,再继续min抓下一个数,原列表空了跳出循环。

matirx_done

= [[0 for i in range(0, len(matirx))]for j in range(0, len(matirx[0]))]

就将其初始化为一个与matrix相同大小的元素全为 0 的矩阵

数组的多级排序
在数组 idea_collect = [[3, 1, 2], [3, 2, 1], [3, 2, 2], [3, 1, 1]] 中,

先按照第二项排列, 再按照第三项倒序排列 可写为:

idea_collect.sort(key=lambda x: (x[1], -x[2]))

总结;x[1] 代表第二项正序排列,-x[2] 代表第三项倒序排列排列结果为 [[3, 1, 2], [3, 1, 1], [3, 2, 2], [3, 2, 1]]在一个 class 中多个函数不传参使用同一个数组。

有关蓝桥杯python组最后几天冲刺——超级实用并且详细的python技巧的更多相关文章

  1. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  2. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  3. Python 相当于 Perl/Ruby ||= - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。

  4. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  5. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  6. python - 如何读取 MIDI 文件、更改其乐器并将其写回? - 2

    我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的

  7. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

  8. 动漫制作技巧如何制作动漫视频 - 2

    动漫制作技巧是很多新人想了解的问题,今天小编就来解答与大家分享一下动漫制作流程,为了帮助有兴趣的同学理解,大多数人会选择动漫培训机构,那么今天小编就带大家来看看动漫制作要掌握哪些技巧?一、动漫作品首先完成草图设计和原型制作。设计草图要有目的、有对象、有步骤、要形象、要简单、符合实际。设计图要一致性,以保证制作的顺利进行。二、原型制作是根据设计图纸和制作材料,可以是手绘也可以是3d软件创建。在此步骤中,要注意的问题是色彩和平面布局。三、动漫制作制作完成后,加工成型。完成不同的表现形式后,就要对设计稿进行加工处理,使加工的难易度降低,并得到一些基本准确的概念,以便于后续的大样、准确的尺寸制定。四、

  9. python ffmpeg 使用 pyav 转换 一组图像 到 视频 - 2

    2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p

  10. Python 刷Leetcode题库,顺带学英语单词(31) - 2

    ValidPalindromeGivenastring,determineifitisapalindrome,consideringonlyalphanumericcharactersandignoringcases. [#125]Example:"Aman,aplan,acanal:Panama"isapalindrome."raceacar"isnotapalindrome.Haveyouconsiderthatthestringmightbeempty?Thisisagoodquestiontoaskduringaninterview.Forthepurposeofthisproblem

随机推荐