该怎么思考这个分类与循环的表达,对于这种问题的常规思路有哪些
1.直接循环,判断x是周日还是非周日,对应的数据累加
2.先找个公式(如果有的话),然后直接套公式计算出结果
方法1当然是万能方法,但是有时效率不高
类似等差数列、等比数列求和的问题,显然套公式要效率的多
x = eval(input("输入星期几:"))
n = eval(input("多少天后: "))
readsum = 0
writesum = 0
if x == 6:
for i in range(1,n+1):
writesum += 2
if (2+(i-1)*7) < n < (8+(i-1)*7):
readsum = (n-i*2) * 35
print("读了{}章!\n写了{}章!".format(readsum, writesum))
break
elif (7+(i-1)*7) < n < (10+(i-1)*7):
readsum = (5*i) * 35
print("读了{}章!\n写了{}章!".format(readsum, writesum+2))
break
elif 0 < n < 3:
print("还没有开始阅读!\n写了2章!")
break
if x == 7:
if n == 1:
print("还没有开始阅读!\n还没有开始写作!")
for i in range(1,n+1):
writesum += 2
if (1+(i-1)*7) < n < (7+(i-1)*7):
readsum = (n-(2*i-1)) * 35
if n < 7:
print("读了{}章!\n还没有开始写作!".format(readsum))
break
else:
print("读了{}章!\n写了{}章!".format(readsum, writesum-2))
break
elif (6+(i-1)*7) < n < (9+(i-1)*7):
readsum = 5*i * 35
print("读了{}章!\n写了{}章!".format(readsum,writesum))
break
if x < 6:
for i in range(1,n+1):
if (7*i-6) < x + n < 7*i:
readsum = (n - writesum)* 35
if i == 1:
print("读了{}章!\n还没有开始写作!".format(readsum))
break
else:
print("读了{}章!\n写了{}章!".format(readsum,writesum))
break
elif (6+(i-1)*7) < x + n < 9+(i-1)*7:
readsum = (6+(i-1)*5-x) * 35
print("读了{}章!\n写了{}章!".format(readsum, writesum+2))
break
writesum += 2