Program runs only half the time

import datetime as dt
import random as rand
def main():
times = []
setDefaults(times)
generate(times)
formatPrint(times)
def setDefaults(blocks):
if dt.date.today().weekday() == 0 or 2 or 3 or 4:
blocks.append("soccer prep/travel")
for _ in range(4):
blocks.append("soccer")
else:
blocks.append("work prep/travel")
for _ in range(8):
blocks.append("work")
def generate(blocks):
activities = ["reading", "math", "code", "youtube"]
r = 0
m = 0
c = 0
y = 0

i = len(blocks)
while i < 27:
if r>=3 and "reading" in activities:
activities.remove("reading")
if m>=2 and "math" in activities:
activities.remove("math")
if c>=2 and "code" in activities:
activities.remove("code")
if y>=1 and "youtube" in activities:
activities.remove("youtube")

blocks.append(activities[rand.randint(0,len(activities)-1)])
while True:
if blocks[i] == blocks[i-1]:
blocks[i] = activities[rand.randint(0,len(activities)-1)]
else:
break

match blocks[i]:
case "math":
for _ in range(3):
blocks.append("math")
m=m+1
case "reading":
for _ in range(1):
blocks.append("reading")
r=r+1
case "youtube":
for _ in range(2):
blocks.append("youtube")
y=y+1
case "code":
for _ in range(2):
blocks.append("code")
c=c+1
i=len(blocks)
def formatPrint(blocks):
i=0
while i<len(blocks):
print(f"__:__ - - {blocks[i]}")
i=i+1
print(blocks)
main()

/r/learnpython Thread Parent