针对蓝桥杯竞赛(Python)的基础知识 No.1

news/2025/2/22 21:46:07/

首先我们要知道Python是有着大量的库(模块、类、函数)的,所谓善借其器,善用其利

Q1、日期问题

掌握 datetime

eg:小蓝每周六、周日都晨跑,每月的 1、11、21、31日也晨跑。其它时间不晨跑。已知 2022年1月1日是周六,请问小蓝整个2022年晨跑多少天?
学过c的话知道,写的话逻辑还是比较复杂的且易错

import datetimestart = datetime.datetime(year=2022,month=1,day=1) 
#print(start) ----- 2022-01-01 00:00:00
end = datetime.datetime(year=2023,month=1,day=1) 
cnt = 0 #count
while start != end: if start.isoweekday() in [6,7] or start.day in [1,11,21,31]:# isoweekday 查找某天是星期几 返回数字1 ~ 7cnt += 1  start += datetime.timedelta(days=1) # 真正意义上的日期上加一天#print(datetime.timedelta(days=1) )-----1 day, 0:00:00print(cnt)

通过这个题我们会发现,python内置函数绝对是一把利器,但随之有个问题:如此多的函数,函数名我们记不清怎么办,所以我们也必须掌握如何查找函数的方法


例如:我现在想使用isoweekday函数,但拼写记不清了怎么办?or 想知道它的功能是什么?

现在你只知道它来自datetime模块,按如下③即可:

import datetime
#①使用dir()命令可查找模块下的包(类)
dir(datetime)
#output:
#['MAXYEAR', 'MINYEAR', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo']
import datetime
#②使用dir()命令可查找库函数
dir(datetime.datetime)
#output:
#['__add__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__radd__', '__reduce__', '__reduce_ex__', '__repr__', '__rsub__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', 'astimezone', 'combine', 'ctime', 'date', 'day', 'dst', 'fold', 'fromisocalendar', 'fromisoformat', 'fromordinal', 'fromtimestamp', 'hour', 'isocalendar', 'isoformat', 'isoweekday', 'max', 'microsecond', 'min', 'minute', 'month', 'now', 'replace', 'resolution', 'second', 'strftime', 'strptime', 'time', 'timestamp', 'timetuple', 'timetz', 'today', 'toordinal', 'tzinfo', 'tzname', 'utcfromtimestamp', 'utcnow', 'utcoffset', 'utctimetuple', 'weekday', 'year']
import datetime
#③使用help()命令查看函数简介
help(datetime.datetime.isoweekday)
#output:
#Help on method_descriptor:
#
#isoweekday(...)
#    Return the day of the week represented by the date.
#    Monday == 1 ... Sunday == 7

建议刚入门python的小白把Q1 code默写一遍


Q2、经典进制问题

掌握 ①bin()、oct()、hex()函数;②格式format化转进制

eg:
2 在十进制中是 1 位数,在二进制中对应 10 ,是 2 位数
22 在十进制中是 2 位数,在二进制中对应 10110 ,是 5 位数。
请问十进制整数 2022 在二进制中是几位数?

# 解
print(len(bin(2022)) -2) #减2是因为 有进制标识符(eg:0b、0o、0x)
#output: 11
#print(bin(2022)) ----- 0b11111100110

Ⅰ. 十转二、八、十六
bin()、oct()、hex()(注意结果带进制标识符)
Ⅱ. 互相转换

print('{:d}'.format(0xef)) #十六进制转十进制:239
print('{:b}'.format(2022)) #十进制转二进制:11111100110
print('{:#o}'.format(0xef)) #十六进制转八进制:0o357 (如果 ':'后有#则表示输出结果带标识符)

小白注意掌握0o/0x/0b标识符


Q3、排列组合问题

掌握组合迭代器itertools

①可迭代笛卡尔积
1 正常for循环

a, b = 'abc', '123'
c = [(i, j) for i in a for j in b]
print(c)
#output:[('a', '1'), ('a', '2'), ('a', '3'), ('b', '1'), ('b', '2'), ('b', '3'), ('c', '1'), ('c', '2'), ('c', '3')]

2 product()

import itertools
for i in itertools.product('abc', '123'):print(i)
#output:
('a', '1')
('a', '2')
('a', '3')
('b', '1')
('b', '2')
('b', '3')
('c', '1')
('c', '2')
('c', '3')
print(list(itertools.product(['1','2', '3'], ['a', 'b', 'c']))) 
#output:[('1', 'a'), ('1', 'b'), ('1', 'c'), ('2', 'a'), ('2', 'b'), ('2', 'c'), ('3', 'a'), ('3', 'b'), ('3', 'c')]

②全排列(无序 不重复)
permutation

import itertools
print(list(itertools.permutations([1, 2, 3]))) 
#output:[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
import itertools
for i in itertools.permutations('abc', 3):# 3 代表迭代序列长度 不写就是全排列print(i)
#output:
('a', 'b', 'c')
('a', 'c', 'b')
('b', 'a', 'c')
('b', 'c', 'a')
('c', 'a', 'b')
('c', 'b', 'a')

③有序,不重复组合
combinations

import itertools
for i in itertools.combinations('abc', 2):print(i)
#output:
('a', 'b')
('a', 'c')
('b', 'c')

④有序,可重复组合
combinations_with_replacement

for i in itertools.combinations_with_replacement('abcd', 2):print(i)
#output:
('a', 'a')
('a', 'b')
('a', 'c')
('a', 'd')
('b', 'b')
('b', 'c')
('b', 'd')
('c', 'c')
('c', 'd')
('d', 'd')

以上着重记全排列,其余可查好说


库函数的使用写法问题

# 写法一:
from itertools import permutations
print(list(permutations([1, 2, 3])))  # [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]# 写法二:
import itertools
print(list(itertools.permutations([1, 2, 3])))


enumerate()遍历索引和元素

lyh_list = ['A', 'B', 'C']
for index, item in enumerate(lyh_list ):#可以直接用在字典上print(f'{index}: {item}')
#output:
0: A
1: B
2: C

字符串函数

在这里插入图片描述

字符转换问题

.lower()转小写
.upper()转大写
.swapcase()将字符串str中的大小写字母同时进行互换。
chr()
ord()

字符串搜索

.find(" ", start, end)搜索字符串,没有返回-1, start\end 可省
.index(" ")返回字符串开始的索引值
.rfind(" ")从右边开始寻找
.count(" ")字符串计数

插入

str1.join(str2):在str2中每个两个字符中间面插入str1中内容,构造出一个新的字符串
.replace()

字符串类型判断

.isspace():只包含空格
.isdigit():只包含数字
.isalpha():只包含字母

A = input()
B = input()
for j in range(len(A)):if A[j] not in B:print(A[j], end='')
#法二
n = input()
m = input()
for i in m:if i in n:n = n.replace(i, ")
print(n)

最小公倍数和最大公约数

def gcd(x, y):if x % y == 0:return yelif x % y == 1:return 1else:return gcd(y, x%y)x*y/gcd(x, y)#最大公约数
import math
math.gcd()

.zfill()补零操作

s_list1 = list(map(list, zip(*s_list1)))逆转矩阵


http://www.ppmy.cn/news/122793.html

相关文章

rx6600属于什么级别的显卡 rx6600相当于gtx什么显卡

RX6600的性能相当于RTX2060和RTX3060之间,RX6600相比RTX2060领先了7%,但是落后RTX3060大概6%。 rx6600怎么样这些点很重要看过你就懂 了 http://www.adiannao.cn/dq 参数方面,RX6600采用基于7nm工艺搭载的RDNA 2 GPU架构,架构代号…

道路曲折,J4105核显直通实验成功了

道路曲折,J4105核显直通实验成功了 首先要参考J3455的教程去设置PVE屏蔽一些驱动和修改grub参数,J3455的教程已经很多了。其中最关键的就是提取只支持uefi启动的vgabios文件,网上的方法都不可行,经过我一番努力,最后终…

HD-SDI转HDMI转换器工作原理及功能介绍

高清HD-SDI转HDMI转换器是一款专用于单路高清数字分量串行接口(HD-SDI和3G-SDI)信号转换为HDMI信号的设备。该设备集成SDI接收器及HDMI调制器,可方便的将HD-SDI信号转为HDMI信号,同时会将SDI所带音频信号分离转换后嵌入到HDMI信号中,以实现声…

HDMI是什么?它与HD BaseT、SDI又有什么区别?

HDMI是什么?它与HD BaseT、SDI又有什么区别? HDMI,全称High Defination Multimedia Interface,高清多媒体接口。是一种数字音频视频传输接口,用于传输未压缩的高清音频视频信号。 HDMI由HDMI协会定义,它的…

HDMI简单介绍

一.什么是HDMI? HDMI(High-Definition Multimedia Interface)称为高清晰度多媒体接口,是首个支持在单线缆上传输不经过压缩的全数字高清晰度、多声道音频和智能格式与控制命令数据的数字接口。HDMI 接口由 SiliconImage 美国晶像公司倡导,联合…

黑苹果0005——我的config文件(笔记本 intel HD630)

更新2018.10.28 这是 i57300HQ hd630 冒卡访问——用的第六代的hd520显卡注入参数(这可能是一块马甲芯片 /难书 ) 说明 不足指出还望执教与纠错,如果兄弟们把在联想笔记本上装上了独显,请及时联系我,让我也吃一口螃蟹…

HDMI简介

HDMI接口全称为High Definition Multimedia Interface,中文为高清晰度多媒体接口,是一种全数位化影像和声音传送接口,可以传送无压缩的音频信号及视频信号。HDMI最远可传输15米。 引脚定义 HDMI有A,B,C,D,E五种引脚类型,目前市面…

HDMI的HDCP是怎么工作的?

简单来说就是,显卡负责,认证控制,防止数字信号被拷贝 信息比较老,发生过秘钥泄漏事件了 HDCP(High -bandwidth Digital Content Protection):高带宽数字内容保护技术。HDTV(高清电视)时代即将来临,为了适应…