|
之前用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
&#39;&#39;&#39;
对角线上的元素为1,5,13,21
为前一个元素+(行号-1)*4
&#39;&#39;&#39;
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
&#39;&#39;&#39;
map函数没有限制,如果只是输入5个数到不会出错,但是输入超过五个数的话,
在排序时后面中比较小的数就会被排进前5个,
与最先输入的5个数字就不符合,
所以在map函数输入完了之后不能立即使用sort函数
要先取出前5个数才能开始排序
&#39;&#39;&#39;
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=&#34; &#34;)
A.sort(reverse=True)
print()
for i in A:
print(i,end=&#34; &#34;)
小明的彩灯——差分算法
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=&#39; &#39;)
#下面是正儿八经的差分法
#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(&#39; &#39;.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作用:以特定格式连接字符串 |
|