日誌1月7日

2021-10-14 05:51:01 字數 1972 閱讀 4667

今天做了藍橋杯省賽比較難的題目:

def

count

(s):

s1=0for i in

range(3

,len

(s))

:# 0,1,2,3->1,2,3,4乙個個的排查

if s[i-

3:i+1]

==『2020』:s1+=

1# 字串切片s[0:4]就是0,1,2,3

return s1

with

open

(「2020.txt」,『r』)

as f:

a=f.readlines(

)# 橫著的數列

n=len

(a)# n行

for i in

range

(n):

# 因為他最後是帶乙個\n符的,我把它消掉。

a[i]

=a[i][:

-1] m=

len(a[0]

)# m列

b=[』』 for i in

range

(m)]

# b來豎著存這些數,所以有列條字串

for i in

range

(m):

for j in

range

(n):

b[i]

+=a[j]

[i]# b[0]+=a[0][0]、a[1][0]、a[2][0]、…

c=# 斜著的最麻煩了。。我的辦法是以對角線為分界,寫兩個迴圈。

for i in

range

(n-1,-

1,-1

):# 打算先從左下角找到左上角

s=』』

for j in

range

(n-i)

:# 每次只新增n-i個,即從1個到n個長度遞增(因為長寬相等)

s+=a[i+j]

[j]# 也就是第一次(n-1,0),第二次(n-2,0和n-1,1)

for j in

range(1

,n):

# 換j從0到n遍歷了,i初始不變

s=』』

for i in

range

(n-j)

: s+=a[i]

[i+j]

# (0,1)(1,2),…,(n-2,n-1),(0,2)(1,3),…,(0,n-1)s=0

for i in a:

s+=count(i)

for i in b:

s+=count(i)

for i in c:

s+=count(i)

print

(s)#

from datetime import datetime as dt

from datetime import timedelta as td

time1=dt(

2000,1

,1)# 建立起始時間物件

time2=dt(

2020,10

,1)# 建立結束時間物件

day=td(days=1)

# 建立增加一天用的物件。(注意這裡是td,是timedelta)s=0

while time1<=time2:

# 時間是可以直接比較的

if time1.day==

1or time1.weekday()==

0: s+=

1# weekday()是方法,[0-6],day是屬性

s+=1

# 不是特殊的也要加1,我當時好像忘加了嗚嗚嗚

time1+=day# datetime物件只能與timedelta物件進行運算,返回datetime物件。

print

(s)

在這裡插入**片

日誌11月7日

吃透這些易錯點,為2級做準備 列印出兩個列表的笛卡爾積 解法1 使用生成器表示式產生笛卡爾積,可以幫忙省掉執行 for 迴圈的開銷。colors blacks white sizes s m l for tshirt in s s c,s for c in colors for s in sizes...

日誌12月1日

今天跟教程寫了個檔案處理工具 from tkinter import import hashlib import time log line num 0class my gui def init self,init window name self.init window name init win...

日誌1月19日

今天覆習數學學課,做了爬取www.pixiv.com的爬蟲 import requests import json import random import re import time class downloadpixiv 設定 ua 列表 def init self self.user age...