语言:Python
赛组:Python程序设计大学B组
时间:2023年
本篇不以编程蓝桥杯的题目为主,主要讲解遇到的题目中如何去解决其中的某些小问题,并在此基础上进行拓展。这是一份完整的技巧攻略,蓝桥杯中很多题目都可靠逻辑去解题,这一份攻略主要是提供给想再短暂时间内提升一下技巧的选手。
1、四舍五入或保留小数点后多少位
例题:成绩统计
百分号前的部分四舍五入保留整数:
# 方法1
print("{:.0f}%".format(a))
# 方法2
print(str(round(a))+"%")
# 方法3
print('%.0f'%a+"%")
2、字节概念
例题:空间
256MB的空间可以存储多少个32位二进制整数?
1MB=1024kb
1kb=1024字节
1字节=8位、32位4字节
3、快速输出所有字母、数字
(1)输出所有的大写字母
print([chr(i) for i in range(65,91)])
(2)输出所有的小写字母
print([chr(i) for i in range(97,123)])
(3)输出所有的数字字符
print([chr(i) for i in range(48,58)])
4、进制转换
(1)任意进制转化为十进制,通用方法
print(int('1011',2))
输出为11,int函数中,前面的数表示为二进制的字符类型,后面的2表示为二进制。同理8进制和十六进制转为十进制也是相同的方法。
(2)十进制转化为二进制、八进制、十六进制
print(bin(10))
print(oct(100))
print(hex(1011))
5、日期处理
例题:天数
这部分不免涉及到计算天数、判断闰年等,如果用普通方法来做,比较的花费时间,但python中的一些第三方库有助于快速解题,且在蓝桥杯的调试器中也同样可以import。
calendar模块
import calendar
1、函数功能:返回指定日期的星期码,从0开始的
calendar.weekday(year,mon,day)
2、函数功能:返回该月第一天的星期码与该月的天数,以元组的形式返回。
calendar.monthrange(year,mon)
3、函数功能:返回(year1, year2)中的闰年个数
calendar.leapdays(year1,year2)
4、函数功能:判断指定年份是否为闰年,返回布尔值判定
calendar.isleap(year)
附带:判断闰年 if (year%4 == 0 and year%100 != 0) or year % 400 == 0:
5、函数功能:返回指定年份的日历(以字符串的形式),这个最好是在本地调试使用,对于一些星期计数的填空题,可以直接数。
calendar.calendar(year)
datetime模块
import datetime as date
x=date.datetime(1949,10,1)
y=date.datetime(2023,1,1)
x、y会返回这个时候的日期信息,通过相减即可得到相差的天数。也有一定的实用性。
x=date.time(6,13,1)
y=date.time(14,36,20)
这里用于计算时间信息。
6、删除重复元素
方法一:
# l1为具有重复元素的数组
for i in l1[:]:
if l1.count(i) > 1:
l1.remove(i)
这个地方会改变对其输入的顺序。
if l2.count(i) < 1: l2.append(i)
虽然不会改变顺序,但创建了新列表。这里巧妙地运用l2里面没有任何地元素。
方法二:
lst = list(set(l1))
利用set()方法最简单,但会改变其顺序。
7、Python排序
例题:考勤刷卡
Python中有内置函数sorted(), list(列表)中也有函数list.sort()都可以进行排序。
区别
list.sort()是对已经存在的列表进行操作,进而可以改变进行操作的列表。而内建函数sorted可以对所有可迭代类型进行排序,返回的是一个新的list。
(1) sort()方法
用于对原列表进行排序(默认为升序排序),排序后的新列表会覆盖原列表。
x = [3, 2, 1, 4]
x.sort()
print(x)
(2) reverse()方法
用于将列表中的元素反向存放。请记住这是倒序输出。
x = [3, 2, 1, 4]
x.reverse()
print(x)
(3) sorted()方法
x = [3, 2, 1, 4]
y = sorted(x)
print(x)
print(y)
降序排列:
y = sorted(x,reverse=True)
(4) 冒泡排序
冒泡排序应该是最常用的,我以前也总结过排序算法,比如插入、快速、归并、线性。后面我会把排序算法整合到一起,所以链接会失效,我这里给出专栏的位置。
def bubble_sort_with_flag(nums):
n = len(nums)
# 外循环:待排序元素数量为 n-1, n-2, ..., 1
for i in range(n - 1, -1, -1):
flag = False # 初始化标志位
# 内循环:冒泡操作
for j in range(i):
if nums[j] > nums[j + 1]:
# 交换 nums[j] 与 nums[j + 1]
nums[j], nums[j + 1] = nums[j + 1], nums[j]
flag = True # 记录交换元素
if not flag:
break # 此轮冒泡未交换任何元素,直接跳出
8、回文数判断
例题:三角回文数
str(a)[::1]==str(a)[::-1]
9、填空题蒙提技巧
如果他这道题要求你输入一个整数,不妨试试这种组合:
2023040820230408
可能会拿考试当天的日期进行题目设计,所以可以试试。
这个是根据样例的输入输出来的,然后使用测试用例就可以看到答案了。
print(input())