额,,离蓝桥杯开赛还有十个小时,最近因为考研复习节奏的问题,把蓝桥杯的优先级后置了,突然才想起来还有一个蓝桥杯呢。。
到目前为止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