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

news2024/12/23 1:15:44

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

Q1、日期问题

掌握 datetime

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

import datetime

start = 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 ~ 7
        cnt += 1  
    start += datetime.timedelta(days=1) # 真正意义上的日期上加一天
    #print(datetime.timedelta(days=1) )-----1 day, 0:00:00
    
print(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 y
    elif x % y == 1:
        return 1
    else:
        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.coloradmin.cn/o/593729.html

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

相关文章

Allegro输出光绘文件规范

光绘输出操作规范 1.1添加钻孔表 添加钻孔表的具体步骤为: 1.通过屏幕右边的Visibility选项的Views列表,将Drill层打开 2.将Visibility选项中的PIN和Via选项都选中,见下图所示: 1.2添加钻孔文件 参数设好之后关闭NC Drill/Parameters窗口,输出数控机床钻孔文件的命令…

1130 Infix Expression(34行代码+超详细注释)

分数 25 全屏浏览题目 切换布局 作者 CHEN, Yue 单位 浙江大学 Given a syntax tree (binary), you are supposed to output the corresponding infix expression, with parentheses reflecting the precedences of the operators. Input Specification: Each input fil…

练习Vue烘培坊项目

烘培坊项目 文章目录 烘培坊项目项目概述项目页面展示后台管理页面登录页面文章详情页面稿件发布页面 项目关键代码实现后台管理页面稿件管理页面内容列表页面文章详情页面烘培坊主页面注册页面登录页面个人信息页面稿件发布页面 项目概述 烘培坊(Bakery&#xff0…

WTI纽约原油CFD期货怎么交易?交易方法有哪些?

我们通常把未加工过的石油称为原油,原油也有“黑色黄金”之称。原油的用途无处不在,无论是工业制品或者日常生活用品等都离不开原油。原油一般以“桶(barrel)”作为单位,1桶约等于159升。在国际上影响力较大的基准原油…

教会你----如何烧录Arduinod代码进入ESP8266 MCU中,让你清楚的了解这个烧录方式的正确操作。

本次开发板为ESP8266 MUC 以下视频是烧录的操作,专给小白的视频 . .分隔符....................................................................................................... . .主要在 RST按久一点, 在放手的一瞬间接着按下 Flash …

电商网站的构建思维和技术

电商网站的架构及技术 3.1框架和技术 本系统主要以.net框架和C#语言位主要的开发工具,前端使用QUI前端框架。技术插件有Redis集群缓存、RabbitMQ 消息、MySql数据库。 实际上,在电商系统中,大部分数据都是可以缓存的,不能使用缓…

影响布伦特原油CFD期货行情的因素有哪些?

原油有很多种,其中比较有知名度的是布伦特原油,该原油是欧洲的原油产品,后来相继的有北海、地中海、也门以及非洲等诸多国家和地区以此为标准推出该产品。在国际金融市场中,布伦特原油特指洲际交易所(ICE)的…

flink1.17.0 集成kafka,并且计算

前言 flink是实时计算的重要集成组件,这里演示如何集成,并且使用一个小例子。例子是kafka输入消息,用逗号隔开,统计每个相同单词出现的次数,这么一个功能。 一、kafka环境准备 1.1 启动kafka 这里我使用的kafka版本…

驾校驾考APP开发功能有哪些?

随着汽车成为越来越多人出行的代步工具之后,需要考驾照的人也是越来越多。小编记得我当初考驾照的时候还是抱着一个小本本每天刷题练习,小本本都快翻烂了。移动互联网的普及让驾考也开始走向线上,刷题、模拟、甚至是考试都可以通过驾考APP小程…

【csdn AI写作助手能帮助我们做什么呢?】

CSDN AI写作助手上线了!InsCode AI 创作助手不仅能够帮助用户高效创作文章,而且能够作为对话式AI回答你想知道的问题。成倍提高生产力! 一、你平时会使用这类AI工具吗?你对这类型的工具有什么看法? 提示:根…

Ubuntu离线安装Vsftp

这是资源包:(14条消息) unbuntu-vsftp.server-Linux文档类资源-CSDN文库 一、安装vsftp 将包解压,然后在解压报的目录下一键安装 dpkg -i *.deb // 安装所有 systemctl status vsftpd #查看运行状态 systemctl restart vsftpd #重新启动vsftp 二、…

【论文阅读公式推导1】连续体机器人的哈密尔顿动力学推导

推导了一下论文哈密尔顿原理的表达,原论文的计算公式是对的,记录一下。 Gravagne I A, Rahn C D, Walker I D. Good vibrations: a vibration damping setpoint controller for continuum robots[C]//Proceedings 2001 ICRA. IEEE International Confer…

[网站分享]

Element-ui Element - The worlds most popular Vue UI frameworkElement,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库https://element.eleme.cn/#/zh-CN Vant Weapp Vant Weapp - 轻量、可靠的小程序 UI 组件库轻量、可靠的小程序 UI 组件…

没有数学基础可以学编程吗?

一、为什么学编程 这里我并不是问大家,是因为兴趣啊还是就业学编程。 而是,我想要学Python为了量化交易,或者我要处理表格。我想要学Java我就想自己建站。是否有这种非常明确的目标,有目标才能明确学习路线。 如果在这里&#…

大数据:HDFS操作的客户端big data tools和NFS

大数据:HDFS操作的客户端 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤…

Vue--》Vue3打造可扩展的项目管理系统后台的完整指南(三)

今天开始使用 vue3 ts 搭建一个项目管理的后台,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的GithHub上,大家可以自行去进行下载运行&…

Pytorch入门(二)神经网络的搭建

torch.nn中的nn全称为neural network,意思是神经网络,是torch中构建神经网络的模块。 文章目录 一、神经网络基本骨架二、认识卷积操作三、认识最大池化操作四、非线性激活五、线性层及其它层介绍六、简单的神经网络搭建七、简单的认识神经网络中的数值计算八、损失…

mmdetection训练coco数据集(继跑通后的一些工具使用)

(仅做个人过程记录的笔记) 1、生成中间件 可以选择评估方式 --eval ,对于 COCO 数据集,可选 bbox 、segm、proposal 。可以得到result.bbox.json文件 生成pkl文件:faster_rcnn.pkl python tools/test.py config.py …

利用栈和队列共同解决迷宫问题

文章目录 什么是迷宫问题?如何解决迷宫问题?DFS(深度优先搜索)BFS(广度优先搜索) 总结 什么是迷宫问题? 迷宫问题是一道经典的算法问题,旨在寻找一条从起点到终点的最短路径。通常迷…

games101作业6

作业要求 Render() in Renderer.cpp: 将你的光线生成过程粘贴到此处,并且按照新框 架更新相应调用的格式。Triangle::getIntersection in Triangle.hpp: 将你的光线-三角形相交函数 粘贴到此处,并且按照新框架更新相应相交信息的格式。 在本次编程练习中…