循环嵌套解题思路解答

img

该怎么思考这个分类与循环的表达,对于这种问题的常规思路有哪些

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