蓝桥杯第一集合:简单的函数问题

门牌号:str的count函数

自己写的:

if __name__ == '__main__':
    n=2020
    s=[]
    for i in range(1,n+1):
        s_n=str(i)
        s.append(s_n)
    print(s)
    new_s="".join(s)
    print(new_s)
    sum_two=0
    for c in new_s:
        if c=='2':sum_two +=1
    print(sum_two)

看了题解学习到了count函数

import os
import sys

# 请在此输入您的代码
b=0
for i in range (1,2021):
  a=str(i).count('2')
  b+=a
print(b)

还有这个,多看几次别被绕晕

print("".join([str(i) for i in range(1, 2021)]).count("2"))

0卡片:使用字典计数,sys.exit()函数

# 使用字典来进行计数
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()

0分数:分数函数Fraction()

from fractions import Fraction
cur = 1
for i in range(1,20):
    cur += Fraction(1,2**i)
print(cur)

我还想着先把分子分母先相加最后再整(后遗症) 其实不然

不需要将分子分母分离 只需要设置double型即可->使用cur

fenzi=0
n=20
fenmu=2**(n-1)
for i in range(n):
  fenzi += 2**i
print(Fraction(fenzi,fenmu))

不知道如何用python表示分子/分母形式

sum=0
for i  in range(20):
  sum+=2**i
print("{}/{}".format(sum,2**19))
# 等价于print(f'{sum}/{2**19}')

还可以使用等比求和

# 等比求和,因式分解显然互素
print(f"{pow(2, 20)-1}/{pow(2, 19)}")

0星期一:datetime库 weekday() timedelta()

import os
import sys
from datetime import*

a=0  #用于累加计数
start=date(1901,1,1)
end=date(2000,12,31)

while start<=end:
  if start.weekday()==0:
    a+=1
  start+=timedelta(days=1)
print(a)
import datetime
#设置时间
start = datetime.date(1901,1,2)
end = datetime.date(2000,12,31)
print(end-start)
print(start.weekday())#返回周几
print((36524)//7)

判断第一天是星期几之后再计算 或者直接计算每一天的周几

datetime库的总结:https://zhuanlan.zhihu.com/p/208291869

0顺子日期:字符串in列表

import os
import sys

# 请在此输入您的代码
import datetime

d1 = datetime.date(2022,1,1)
d2 = datetime.date(2022,12,31)
day = datetime.timedelta(days=1)
# print(str(d.year)+str(d.month))
m=['012','123','234','345','456','567','678','789']
c=0
while d1<=d2:
    str1 = str(d1).replace('-','')
    for i in range(6):
        if str1[i:i+3] in m:
            c+=1
            break  #pay attention
    d1+=day
print(c)

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值