忘了拷贝pdf题目,就把我还记得的题放上来吧!
- 带宽
200?8=25 - 完全日期
大月小月不说了,大家都知道;就是当时不知道哪些年的2月份具体有多少天,然后用电脑自带的日历根据从2001查到了2021年,代码直接放下面,结果跑完是 977
wq=0
for year in range(2001,2022):
##print(year)
for month in range(1,13):
##print(str(year)+str(month))
if month in [1,3,5,7,8,10,12]:
print(str(year)+"年,"+str(month)+"月,31天")
for d in range(1,32):
liebiao = list(str(year)+str(month)+str(d))
a=0
for i in liebiao:
a+=int(i)
if a in[4,9,16,25,36,49,64]:
print(a)
wq+=1
if month in [4,6,9,11]:
print(str(year)+"年,"+str(month)+"月,30天")
for d in range(1,31):
liebiao = list(str(year)+str(month)+str(d))
a=0
for i in liebiao:
a+=int(i)
if a in[4,9,16,25,36,49,64]:
print(a)
wq+=1
if month ==2 :
if year in [2004,2008,2012,2016,2020]:
print(str(year)+"年,"+str(month)+"月,29天")
for d in range(1,30):
liebiao = list(str(year)+str(month)+str(d))
a=0
for i in liebiao:
a+=int(i)
if a in[4,9,16,25,36,49,64]:
print(a)
wq+=1
else:
print(str(year)+"年,"+str(month)+"月,28天")
for d in range(1,29):
liebiao = list(str(year)+str(month)+str(d))
a=0
for i in liebiao:
a+=int(i)
if a in[4,9,16,25,36,49,64]:
print(a)
wq+=1
print(wq)
- 123
要求输入一个行数,之后每一行分别是起始计算点和结束计算点。我们只需要根据结束计算点的最大值来构造数列就可以了。在这里实现一行输入两个数字的方法是先整体输入,然后用split切分成一个包含两个值的列表,之后就可以按列表索引分别给起始计算点和技术计算点赋值。代码如下:
asknum = int(input())
qishi=[]
jieshu=[]
quanbu=[]
for i in range(1,asknum+1):
zong = input().split(" ")
quanbu.append(int(zong[0]))
quanbu.append(int(zong[1]))
qishi.append(int(zong[0]))
jieshu.append(int(zong[1]))
maxnum = int(max(quanbu))
a =0
cishu=0
for i in range(1,maxnum+1):
cishu = i
a+=i
if a>=maxnum:
break
shulie = []
for i in range(1,cishu+1):
for a in range(1,i+1):
shulie.append(a)
for i in range(asknum):
sum = 0
for f in range(int(qishi[i]),int(jieshu[i])+1):
sum +=shulie[f-1]
print(sum)
sum = 0
- 二进制问题
具体流程:输一个数字后输出其二进制,强制转换为字符串,替换掉开头的"0b",之后统计1的个数就行啦。代码如下:
zong = input().split()
N=int(zong[0])
K=int(zong[1])
sum = 0
for i in range(1,N+1):
flag=0
for a in str(bin(i)).replace('0b',''):
if a in ['1']:
flag+=1
if flag == K:
sum+=1
print(sum)
- 和与乘积
循环遍历就可以了其实,时间紧,具体细节之后再补充,先放代码:
long = int(input())
shulie = input().split(" ")
zong = 0
for i in range(long):
for a in range(i,long):
chengji=1
qiuhe = 0
for b in range(i,a+1):
qiuhe += int(shulie[b])
chengji *= int(shulie[b])
if qiuhe == chengji:
zong+=1
chengji=1
qiuhe = 0
print(zong)
- 大写
小写转大写,很简单,用函数对数字和字母进行转换,之后减去大小写字母对应的差就行,代码如下:
s = input()
for i in s:
if ord(i) >=97 and ord(i) <=122:
print(chr(int(ord(i))-32),end="")
else:
print(i,end="")
【python|第十二届蓝桥杯国赛三等奖 大学Python组,部分试题答案】总体感觉国赛试题比省赛简单,由于个人编程水平有限,代码仅供参考!
最后证书镇楼哈哈!
推荐阅读
- 小程序|小程序输入框完成自动切换到下个输入框
- Python|第十二届青少年蓝桥杯 Python 组3月中/高级试题
- 揭开生成对抗网络(GAN)的神秘面纱
- pandas教程(使用read_csv()导入数据)
- 了解Python中的随机森林分类器
- 使用Jinja2的Jupyter Notebook的自定义模板
- TensorBoard精品开发教程
- 将字符串转换为日期作为datetime对象
- 使用Python增强数据科学中的电子表格