备赛蓝桥杯-Python-考前突击

额,,离蓝桥杯开赛还有十个小时,最近因为考研复习节奏的问题,把蓝桥杯的优先级后置了,突然才想起来还有一个蓝桥杯呢。。

到目前为止python基本语法熟练了,再补充一些常用函数供明天考前再背背,算法来不及看了,eh,嘿嘿...祝友友们都能拿省一!

 

一、字符串

1.ASCII码函数

print(ord('L')-ord('A')+65)

ord()函数可以将字符转换为对应的ASCII码,chr()函数可以将ASCII码转换为对应的字符

 

2.字母大小写函数

upper() 方法

upper() 方法将字符串中的所有小写字母转换为大写字母。

lower() 方法

lower() 方法将字符串中的所有大写字母转换为小写字母。

capitalize() 方法

capitalize() 方法将字符串的第一个字母转换为大写,其余字母转换为小写。

title() 方法

title() 方法将每个单词的首字母转换为大写,其余字母转换为小写。

 

3.分割函数

str.split(sep=None,maxsplit=-1)

表示:使用sep子字符串分割字符串str。maxsplit是最大分割次数

str.rsplit(sep=None,maxsplit=-1)

表示:从右到左分割字符串

4.字符串列表转int列表

list = [ int(i) for i in str]

 

 

 

 

 

二、时间函数

datetime.datetime 函数说明

datetime.datetime 是 Python 中 datetime 模块的一个类,用于处理日期和时间。通过该类可以创建一个包含日期和时间的对象。

  • datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0) 创建一个日期时间对象,参数包括年、月、日、时、分、秒和微秒。例如:

    datetime.datetime(1970, 1, 1, 0, 0, 0)  # 表示纪元时间起点

常用日期和时间函数总结

1. 日期时间的创建与解析

  • datetime.datetime.now() 获取当前的日期和时间。

    now = datetime.datetime.now()
  • datetime.datetime.strptime(date_string, format) 将字符串按指定格式解析为 datetime 对象。

    dt = datetime.datetime.strptime("2023-10-01 12:30:45", "%Y-%m-%d %H:%M:%S")
  • datetime.datetime.strftime(format)datetime 对象格式化为字符串。

    formatted = dt.strftime("%Y-%m-%d %H:%M:%S")

2. 日期时间的运算

  • datetime.timedelta 表示两个日期或时间之间的差值,支持加减运算。

    delta = datetime.timedelta(days=1, hours=2, minutes=30)
    new_time = datetime.datetime.now() + delta
  • datetime.datetime.timestamp()datetime 对象转换为时间戳(自纪元时间以来的秒数)。

    timestamp = datetime.datetime.now().timestamp()
  • datetime.datetime.fromtimestamp(timestamp) 将时间戳转换为 datetime 对象。

    dt = datetime.datetime.fromtimestamp(1696138245)

3. 日期时间的属性

  • year, month, day, hour, minute, second, microsecond 获取 datetime 对象的各个部分。

    dt = datetime.datetime.now()
    print(dt.year, dt.month, dt.day)
  • weekday()isoweekday() 获取星期几,weekday() 返回 0(周一)到 6(周日),isoweekday() 返回 1(周一)到 7(周日)。

    print(dt.weekday(), dt.isoweekday())

4. 其他常用功能

  • datetime.date.today() 获取当前日期(不包含时间)。

    today = datetime.date.today()
  • datetime.time(hour=0, minute=0, second=0, microsecond=0) 创建一个时间对象。

    t = datetime.time(12, 30, 45)
  • datetime.datetime.combine(date, time) 将日期和时间组合成一个 datetime 对象。

    combined = datetime.datetime.combine(datetime.date.today(), datetime.time(12, 30))

 

用一道真题融会贯通

问题描述

小蓝发现了一个神奇的闹钟,从纪元时间(19701970 年 11 月 11 日 00:00:0000:00:00)开始,每经过 xx 分钟,这个闹钟便会触发一次闹铃 (纪元时间也会响铃)。这引起了小蓝的兴趣,他想要好好研究下这个闹钟。

对于给出的任意一个格式为 уууу-MM-ddHH:mm:ssуууу-MM-ddHH:mm:ss 的时间,小蓝想要知道在这个时间点之前 (包含这个时间点) 的最近的一次闹铃时间是哪个时间?

注意,你不必考虑时区问题。

输入格式

输入的第一行包含一个整数 TT,表示每次输入包含 TT 组数据。

接下来依次描述 TT 组数据。

每组数据一行,包含一个时间(格式为 уууу-MM-ddHH:mm:ssуууу-MM-ddHH:mm:ss)和一个整数 xx,其中 xx 表示闹铃时间间隔(单位为分钟)。

输出格式

输出 TT 行,每行包含一个时间(格式为 уууу-MM-ddHH:mm:ssуууу-MM-ddHH:mm:ss),依次表示每组数据的答案。

样例输入

2
2016-09-07 18:24:33 10
2037-01-05 01:40:43 30

 

样例输出

2016-09-07 18:20:00
2037-01-05 01:30:00

 

评测用例规模与约定

对于所有评测用例,1≤T≤10,1≤x≤10001≤T≤10,1≤x≤1000,保证所有的时间格式都是合法的。

 

思路

当作练习日期的函数很好
思路就是:用输入的时间和1970这个日期的差值对闹铃时间间隔取余,由此得到输入的时间和上一次闹铃响的时刻的时间差值(分钟),减去就行
关键点在于掌握时间函数的用法。

 

代码

import datetimen = int(input())
for _ in range(n):time = input().rsplit(" ", 1)delt = int(time[1])oratime = datetime.datetime.strptime('1970-01-01 00:00:00', '%Y-%m-%d %H:%M:%S')nowtime = datetime.datetime.strptime(time[0], '%Y-%m-%d %H:%M:%S')x = (nowtime - oratime) % datetime.timedelta(minutes=delt)finaltime = nowtime - xprint(finaltime)

三、 常用排序函数

sorted()函数

  • 功能: 返回一个新的排序后的列表。

  • 参数:

    • iterable: 可迭代对象(如列表、元组等)。

    • key (可选): 一个函数,用于从每个元素中提取比较键。

    • reverse (可选): 布尔值,True 表示降序排序,默认为 False(升序)。

# 示例
numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出: [1, 2, 5, 5, 6, 9]# 使用 key 参数
words = ["banana", "apple", "cherry"]
sorted_words = sorted(words, key=len)
print(sorted_words)  # 输出: ['apple', 'banana', 'cherry']# 降序排序
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc)  # 输出: [9, 6, 5, 5, 2, 1]

list.sort() 方法

  • 功能: 对列表进行原地排序。

  • 参数:

    • key (可选): 一个函数,用于从每个元素中提取比较键。

    • reverse (可选): 布尔值,True 表示降序排序,默认为 False(升序)。

# 示例
numbers = [5, 2, 9, 1, 5, 6]
numbers.sort()
print(numbers)  # 输出: [1, 2, 5, 5, 6, 9]
​
# 使用 key 参数
words = ["banana", "apple", "cherry"]
words.sort(key=len)
print(words)  # 输出: ['apple', 'banana', 'cherry']
​
# 降序排序
numbers.sort(reverse=True)
print(numbers)  # 输出: [9, 6, 5, 5, 2, 1]

四、 蓝桥杯其它常用函数

(1) 输入输出

  • input(): 从标准输入读取一行数据。

  • print(): 将数据输出到标准输出。

(2) 字符串操作

  • str.split(separator): 将字符串按指定分隔符分割成列表。

  • str.join(iterable): 将可迭代对象中的元素连接成一个字符串。

  • str.strip(): 去除字符串两端的空白字符。

  • str.splitlines(): 按行分割字符串。

# 示例
text = "a b c\nd e f"
lines = text.splitlines()
print(lines)  # 输出: ['a b c', 'd e f']
​
words = "a,b,c".split(",")
print(words)  # 输出: ['a', 'b', 'c']
​
joined = " ".join(words)
print(joined)  # 输出: 'a b c'

(3) 列表操作

  • list.append(element): 在列表末尾添加一个元素。

  • list.extend(iterable): 将可迭代对象中的所有元素添加到列表末尾。

  • list.insert(index, element): 在指定位置插入一个元素。

  • list.remove(element): 删除列表中第一个匹配的元素。

  • list.pop([index]): 删除并返回指定位置的元素,默认为最后一个元素。

  • list.index(element): 返回元素在列表中的第一个匹配索引。

  • list.count(element): 返回元素在列表中出现的次数。

  • list.sort(): 对列表进行原地排序。

  • list.reverse(): 反转列表中的元素顺序。

# 示例
numbers = [1, 2, 3]
numbers.append(4)
print(numbers)  # 输出: [1, 2, 3, 4]
​
numbers.extend([5, 6])
print(numbers)  # 输出: [1, 2, 3, 4, 5, 6]
​
numbers.insert(0, 0)
print(numbers)  # 输出: [0, 1, 2, 3, 4, 5, 6]
​
numbers.remove(3)
print(numbers)  # 输出: [0, 1, 2, 4, 5, 6]
​
popped = numbers.pop()
print(popped)  # 输出: 6
print(numbers)  # 输出: [0, 1, 2, 4, 5]
​
index = numbers.index(2)
print(index)  # 输出: 2
​
count = numbers.count(1)
print(count)  # 输出: 1
​
numbers.sort(reverse=True)
print(numbers)  # 输出: [4, 2, 1, 0]
​
numbers.reverse()
print(numbers)  # 输出: [0, 1, 2, 4]

(4) 数组操作

  • array.array(typecode, initializer): 创建一个数组对象。

  • array.append(x): 在数组末尾添加一个元素。

  • array.extend(iterable): 将可迭代对象中的所有元素添加到数组末尾。

  • array.insert(i, x): 在指定位置插入一个元素。

  • array.remove(x): 删除数组中第一个匹配的元素。

  • array.pop([i]): 删除并返回指定位置的元素,默认为最后一个元素。

  • array.index(x): 返回元素在数组中的第一个匹配索引。

  • array.count(x): 返回元素在数组中出现的次数。

import array
​
# 示例
arr = array.array('i', [1, 2, 3])
arr.append(4)
print(arr)  # 输出: array('i', [1, 2, 3, 4])
​
arr.extend([5, 6])
print(arr)  # 输出: array('i', [1, 2, 3, 4, 5, 6])
​
arr.insert(0, 0)
print(arr)  # 输出: array('i', [0, 1, 2, 3, 4, 5, 6])
​
arr.remove(3)
print(arr)  # 输出: array('i', [0, 1, 2, 4, 5, 6])
​
popped = arr.pop()
print(popped)  # 输出: 6
print(arr)  # 输出: array('i', [0, 1, 2, 4, 5])
​
index = arr.index(2)
print(index)  # 输出: 2
​
count = arr.count(1)
print(count)  # 输出: 1

(5) 集合操作

  • set(): 创建一个集合对象。

  • set.add(element): 添加一个元素到集合。

  • set.update(iterable): 将可迭代对象中的所有元素添加到集合。

  • set.remove(element): 删除集合中指定的元素。

  • set.discard(element): 删除集合中指定的元素,如果不存在则不报错。

  • set.pop(): 删除并返回集合中的一个元素。

  • set.clear(): 清空集合。

  • set.union(iterable): 返回两个集合的并集。

  • set.intersection(iterable): 返回两个集合的交集。

  • set.difference(iterable): 返回两个集合的差集。

  • set.symmetric_difference(iterable): 返回两个集合的对称差集。

# 示例
set1 = {1, 2, 3}
set2 = {3, 4, 5}
​
set1.add(4)
print(set1)  # 输出: {1, 2, 3, 4}
​
set1.update([5, 6])
print(set1)  # 输出: {1, 2, 3, 4, 5, 6}
​
set1.remove(3)
print(set1)  # 输出: {1, 2, 4, 5, 6}
​
set1.discard(7)  # 不会报错
print(set1)  # 输出: {1, 2, 4, 5, 6}
​
popped = set1.pop()
print(popped)  # 输出: 1 或其他元素
print(set1)  # 输出: {2, 4, 5, 6}
​
set1.clear()
print(set1)  # 输出: set()
​
union_set = set1.union(set2)
print(union_set)  # 输出: {3, 4, 5}
​
intersection_set = set1.intersection(set2)
print(intersection_set)  # 输出: set()
​
difference_set = set1.difference(set2)
print(difference_set)  # 输出: set()
​
symmetric_difference_set = set1.symmetric_difference(set2)
print(symmetric_difference_set)  # 输出: {3, 4, 5}

(6) 字典操作

  • dict(): 创建一个字典对象。

  • dict[key] = value: 添加或更新键值对。

  • dict.get(key, default=None): 获取指定键的值,如果不存在则返回默认值。

  • dict.pop(key, default=None): 删除并返回指定键的值,如果不存在则返回默认值。

  • dict.keys(): 返回字典中所有键的视图。

  • dict.values(): 返回字典中所有值的视图。

  • dict.items(): 返回字典中所有键值对的视图。

  • dict.update(iterable): 将可迭代对象中的键值对更新到字典。

  • dict.clear(): 清空字典。

# 示例
my_dict = {'a': 1, 'b': 2}
my_dict['c'] = 3
print(my_dict)  # 输出: {'a': 1, 'b': 2, 'c': 3}
​
value = my_dict.get('b')
print(value)  # 输出: 2
​
popped_value = my_dict.pop('a')
print(popped_value)  # 输出: 1
print(my_dict)  # 输出: {'b': 2, 'c': 3}
​
keys = my_dict.keys()
print(keys)  # 输出: dict_keys(['b', 'c'])
​
values = my_dict.values()
print(values)  # 输出: dict_values([2, 3])
​
items = my_dict.items()
print(items)  # 输出: dict_items([('b', 2), ('c', 3)])
​
my_dict.update({'d': 4})
print(my_dict)  # 输出: {'b': 2, 'c': 3, 'd': 4}
​
my_dict.clear()
print(my_dict)  # 输出: {}

(7) 数学运算

  • math 模块:

    • math.ceil(x): 向上取整。

    • math.floor(x): 向下取整。

    • math.sqrt(x): 计算平方根。

    • math.pow(x, y): 计算 x 的 y 次方。

    • math.log(x, base): 计算以 base 为底的对数。

    • math.sin(x), math.cos(x), math.tan(x): 三角函数。

    • math.factorial(x): 计算阶乘。

    • math.gcd(a, b): 计算最大公约数。

import math
​
# 示例
x = 3.7
print(math.ceil(x))  # 输出: 4
print(math.floor(x))  # 输出: 3
​
y = 16
print(math.sqrt(y))  # 输出: 4.0
​
print(math.pow(2, 3))  # 输出: 8.0
​
print(math.log(10, 10))  # 输出: 1.0
​
print(math.sin(math.pi / 2))  # 输出: 1.0
​
print(math.factorial(5))  # 输出: 120
​
print(math.gcd(12, 18))  # 输出: 6

 

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

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

相关文章

榕壹云外卖跑腿系统:基于Spring Boot+MySQL+UniApp的智慧生活服务平台

项目背景与需求分析 随着本地生活服务需求的爆发式增长,外卖、跑腿等即时配送服务成为现代都市的刚性需求。传统平台存在开发成本高、功能定制受限等问题,中小企业及创业团队极需一款轻量级、可快速部署且支持二次开发的外卖跑腿系统。榕壹云外卖跑腿系统…

使用Docker安装Gogs

1、拉取镜像 docker pull gogs/gogs 2、运行容器 # 创建/var/gogs目录 mkdir -p /var/gogs# 运行容器 # -d,后台运行 # -p,端口映射:(宿主机端口:容器端口)->(10022:22)和(10880:3000) # -v,数据卷映射:(宿主机目…

【antd + vue】Modal 对话框:修改弹窗标题样式、Modal.confirm自定义使用

一、标题样式 1、目标样式:修改弹窗标题样式 2、问题: 直接在对应css文件中修改样式不生效。 3、原因分析: 可能原因: 选择器权重不够,把在控制台找到的选择器直接复制下来,如果还不够就再加&#xff…

Streamlit在测试领域中的应用:构建自动化测试报告生成器

引言 Streamlit 在开发大模型AI测试工具方面具有显著的重要性,尤其是在简化开发流程、增强交互性以及促进快速迭代等方面。以下是几个关键点,说明了 Streamlit 对于构建大模型AI测试工具的重要性: 1. 快速原型设计和迭代 对于大模型AI测试…

docker 运行自定义化的服务-后端

docker 运行自定义化的服务-前端-CSDN博客 运行自定义化的后端服务 具体如下: ①打包后端项目,形成jar包 ②编写dockerfile文件,文件内容如下: # 使用官方 OpenJDK 镜像 FROM jdk8:1.8LABEL maintainer"ATB" version&…

解决java使用easyexcel填充模版后,高度不一致问题

自定义工具,可以通过获取上一行行高设置后面所以行的高度 package org.springblade.modules.api.utils;import com.alibaba.excel.write.handler.RowWriteHandler; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.wr…

repo仓库文件清理

1. repo 仓库内文件清理 # 清理所有Git仓库中的项目 repo forall -c git clean -dfx # 重置所有Git 仓库中的项目 repo forall -c git reset --hard 解释: repo forall -c git clean -dfx: repo forall 是一个用于在所有项目中执行命令的工具。-c 后…

结合大语言模型整理叙述并生成思维导图的思路

楔子 我比较喜欢长篇大论。这在代理律师界被视为一种禁忌。 我高中一年级的时候因为入学成绩好(所在县榜眼名次),直接被所在班的班主任任命为班长。我其实不喜欢这个岗位。因为老师一来就要提前注意到,要及时喊“起立”、英语课…

spark-core编程2

Key-Value类型: foldByKey 当分区内计算规则和分区间计算规则相同时,aggregateByKey 就可以简化为 foldByKey combineByKey 最通用的对 key-value 型 rdd 进行聚集操作的聚集函数(aggregation function)。类似于aggregate()&…

原理图设计准备:页面栅格模板应用设置

一、页面大小的设置 (1)单页原理图页面设置 首先,选中需要更改页面尺寸的那一页原理图,鼠标右键,选择“Schmatic Page Properties”选项,进行页面大小设置。 (2)对整个原理图页面设…

关于异步消息队列的详细解析,涵盖JMS模式对比、常用组件分析、Spring Boot集成示例及总结

以下是关于异步消息队列的详细解析,涵盖JMS模式对比、常用组件分析、Spring Boot集成示例及总结: 一、异步消息核心概念与JMS模式对比 1. 异步消息核心组件 组件作用生产者发送消息到消息代理(如RabbitMQ、Kafka)。消息代理中间…

【深度洞察】解码饮料行业破局点:场景革命

当东鹏特饮以 “大瓶装 防尘盖” 精准解决货车司机的场景化需求,当农夫山泉通过 “冷藏版东方树叶” 打开年轻白领的早餐场景 —— 这些现象级案例背后,是饮料行业底层逻辑的深刻变革:真正的市场增量,藏在对消费场景的极致拆解中…

二、TorchRec中的分片

TorchRec中的分片 文章目录 TorchRec中的分片前言一、Planner二、EmbeddingTable 的分片TorchRec 中所有可用的分片类型列表 三、使用 TorchRec 分片模块进行分布式训练TorchRec 在三个主要阶段处理此问题 四、DistributedModelParallel(分布式模型并行)…

如何在 Spring Boot 项目中使用 MyBatis 进行批量操作以提升性能?

MyBatis 提供了 ExecutorType.BATCH 类型,允许将多个 SQL 语句进行组合,最后统一执行,从而减少数据库的访问频率,提升性能。 以下是如何在 Spring Boot 项目中使用 MyBatis 进行批量操作的关键点: 1. 配置 MyBatis 使…

Redis 字符串(String)详解

1. 什么是字符串类型 在 Redis 中,字符串(String) 是最基本的数据类型。它可以包含任何数据,比如文本、JSON、甚至二进制数据(如图片的 Base64 编码),最大长度为 512 MB。 字符串在 Redis 中不…

Elasticsearch 系列专题 - 第四篇:聚合分析

聚合(Aggregation)是 Elasticsearch 的强大功能之一,允许你对数据进行分组、统计和分析。本篇将从基础到高级逐步讲解聚合的使用,并结合实际案例展示其应用。 1. 聚合基础 1.1 什么是聚合(Aggregation)? 聚合是对文档集合的统计分析,类似于 SQL 中的 GROUP BY 和聚合…

YOLO学习笔记 | YOLOv8 全流程训练步骤详解(2025年4月更新)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 这里写自定义目录标题 一、数据准备1. 数据标注与格式转换2. 配置文件生…

context上下文(一)

创建一个基础的context 使用BackGround函数,BackGround函数原型如下: func Background() Context {return backgroundCtx{} } 作用:Background 函数用于创建一个空的 context.Context 对象。 context.Background() 函数用于获取一个空的 cont…

Java中常见的设计模式

Java中常见的设计模式 Java 中有 23 种经典设计模式,通常被分为三大类:创建型、结构型和行为型。每个设计模式都解决了不同类型的设计问题。以下是几种常见设计模式的总结,并附带了实际应用场景、示例代码和详细的注释说明。 一、创建型设计…

责任链设计模式(单例+多例)

目录 1. 单例责任链 2. 多例责任链 核心区别对比 实际应用场景 单例实现 多例实现 初始化 初始化责任链 执行测试方法 欢迎关注我的博客!26届java选手,一起加油💘💦👨‍🎓😄😂 最近在…