启明办公

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 86|回复: 0

蓝桥杯备赛(python)

[复制链接]

1

主题

3

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2023-1-12 13:24:50 | 显示全部楼层 |阅读模式
之前用C做过的一些题目

成绩统计

import os
import sys
n=int(input())
grades=0
nice=0
ok=0
for i in range(n):
    grades=int(input())
    if grades>=85:
        nice+=1
        ok+=1
    elif grades>=60:
        ok+=1
print("{:.0f}%".format(100*ok/n))
print("{:.0f}%".format(100*nice/n))总结:
1.range函数里面是int类型的,但是for循环也可以下面这样,即i和word都是字符:
word=input()
for i in word:
    c=word.count(i)
2.format函数可以格式化string和number类型
3.数字格式化要会


单词分析

import os
import sys
word=input()
a=0
b=[]
for i in word:
    c=word.count(i)
    if c>=a:
        a=c
for j in word:
    if word.count(j)==a:
        b.append(j)
b.sort()
print(b[0])
print(a)总结:
1.count函数可以查看list和string的元素出现次数
2.append可以在list后面追加元素,但string不能
3.sort可以在string和list里排序,默认为升序,以下为降序(即在后面加上reverse=True)
例如:list.sort(reverse=True)
4.python里的list就是C里面的数组啊
门牌制作


import os
import sys
sum=0
for i in range(1,2021):
    a=str(i).count('2')
    sum+=a
print(sum)总结:
str()函数可以强制转换为string类型
卡片

import sys
a={'0':2021,'1':2021,'2':2021,'3':2021,'4':2021,'5':2021,'6':2021,'7':2021,'8':2021,'9':2021}
for i in range(1,999999):
  for j in str(i):
    a[j]-=1
    if a[j]<0:
      print(i-1)
      sys.exit()总结:
1.本题直接字典爆破即可
2.要会创建列表,list()是列表创建函数
蛇形填数

import os
import sys
'''
对角线上的元素为1,5,13,21
为前一个元素+(行号-1)*4
'''
sum=1
for i in range(2,21):
    sum=sum+4*(i-1)
print(sum)等差素数列

import os
import sys

# 请在此输入您的代码
#等差素数列的公差可以被任何一个小于该长度的素数整除
#那么len=10的话,则公差可被(1,2,3,5,7)整除
for i in range(8,1000000):
  if i%1==0 and i%2==0 and i%3==0 and i%5==0 and i%7==0:
    print(i)
    break跳跃

没想出来,一会做
算法模板题(简单难度)

排序——排序算法

import os
import sys
'''
map函数没有限制,如果只是输入5个数到不会出错,但是输入超过五个数的话,
在排序时后面中比较小的数就会被排进前5个,
与最先输入的5个数字就不符合,
所以在map函数输入完了之后不能立即使用sort函数
要先取出前5个数才能开始排序
'''
N=int(input())
B=[int(i) for i in input().split()]
A=[]
for i in range(N):
    A.append(B)
A.sort()
for i in A:
    print(i,end=" ")
A.sort(reverse=True)
print()
for i in A:
    print(i,end=" ")
小明的彩灯——差分算法

import os
import sys
#下面注释掉的是超时的
# N,Q=map(int,input().split())
# light=[int(i)for i in input().split()]
# for i in range(Q):
#     l,r,x=map(int,input().split())
#     for j in range(l-1,r):
#         light[j]+=x
# for i in range(N):
#     print(max(light,0),end=' ')


#下面是正儿八经的差分法
#lambda相当于弄了一个函数
read = lambda: [int(x) for x in input().split()]
N, Q = read()
arr = [0] + read()
diff = [0] * (N + 2)
for i in range(1, N + 1): diff = arr - arr[i - 1]
#下面的for _ in range(n) 一般仅仅用于循环n次,不用设置变量,用 _ 指代临时变量,只在这个语句中使用一次。
for _ in range(Q):
  l, r, x = read()
  diff[l] += x
  diff[r + 1] -= x
for i in range(1, N + 1):
  arr = arr[i - 1] + diff
print(' '.join(str(max(0, x)) for x in arr[1:]))
总结:
1.这类差分法的题必须用差分法,否则会超时
2.map()函数返回类型为迭代器,必须list()函数转换一下才能用到list里
3.前面是两个的话返回是int类型的


前面是一个的话是迭代器类型的


4.本题一开始未通过的原因是超时,差分法可以减少时间,这题就必须用差分法,(95条消息) 差分法~超详细(公式+原理+例题)_Blind-Stab的博客-CSDN博客_差分法
5.join()函数python作用:以特定格式连接字符串
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|启明办公

Copyright © 2001-2013 Comsenz Inc.Template by Comsenz Inc.All Rights Reserved.

Powered by Discuz!X3.4

快速回复 返回顶部 返回列表