如何使用复选框跳过Python中的日期

如何使用复选框跳过Python中的日期,python,checkbox,Python,Checkbox,我有4个复选框,每个复选框代表一个日期,例如: Week 1: 01/01/2019 [ ] - checkbox 1 Week 2: 08/01/2019 [ ] - checkbox 2 Week 3: 15/01/2019 [ ] - checkbox 3 Week 4: 22/01/2019 [ ] - checkbox 4 Week To Pay 29/01/2019 我尝试了以下代码 W1 = W1 = timedelta(days=7) week_one_raw

我有4个复选框,每个复选框代表一个日期,例如:

Week 1: 01/01/2019  [  ] - checkbox 1
Week 2: 08/01/2019  [  ] - checkbox 2
Week 3: 15/01/2019  [  ] - checkbox 3
Week 4: 22/01/2019  [  ] - checkbox 4
Week To Pay 29/01/2019
我尝试了以下代码

W1 = W1 = timedelta(days=7)
week_one_raw = "01/01/2019"
week_one_raw = datetime.strptime(FIXED_WEEK_1, '%d/%m/%Y')
week_one_refined = week_one_raw
week_two_refined = week_one_raw + W1
week_three_refined = week_two_refined + W1
week_four_refined = week_three_refined + W1
week_to_pay_refined = week_four_refined + W1

if BOX_1 == 1:
    week_one_refined = week_one_raw + W1
    week_two_refined = week_one_refined + W1
    week_three_refined = week_two_refined + W1
    week_four_refined = week_three_refined + W1
    week_to_pay_refined = week_four_refined + W1

if BOX_1 == 0:
    week_one_refined = week_one_raw
    week_two_refined = week_one_raw + W1
    week_three_refined = week_two_refined + W1
    week_four_refined = week_three_refined + W1
    week_to_pay_refined = week_four_refined + W1

if BOX_2 == 1:
    week_one_refined = week_one_refined + W1
    week_two_refined = week_two_refined + W1
    week_three_refined = week_two_refined + W1
    week_four_refined = week_three_refined + W1
    week_to_pay_refined = week_four_refined + W1

if BOX_2 == 0:
    week_one_refined = week_one_refined
    week_two_refined = week_two_refined
    week_three_refined = week_three_refined
    week_four_refined = week_four_refined
    week_to_pay_refined = week_four_refined + W1

  • 如果框1和框2等于零,则输出正确
  • 如果框1和框2等于1,则输出正确
  • 如果框1等于1,框2等于零,则输出正确
  • 如果框1等于零,框2等于1,则输出不正确,因为它跳过了一周的时间,返回的时间比应该执行的时间提前了一周
代码错误


#the full code that works


import datetime
from datetime import datetime
from datetime import timedelta

FIXED_WEEK_1 = "15/04/2019" 


W1 = timedelta(days=7)
W2 = timedelta(days=14)
W3 = timedelta(days=21)
W4 = timedelta(days=28)
W5 = timedelta(days=35)

BOX_1 = 0
BOX_2 = 0
BOX_3 = 0
BOX_4 = 0

week_one_raw = datetime.strptime(FIXED_WEEK_1, '%d/%m/%Y')
week_one_refined = week_one_raw
week_two_refined = week_one_raw + W1
week_three_refined = week_two_refined + W1
week_four_refined = week_three_refined + W1
week_to_pay_refined = week_four_refined + W1

if BOX_1 == 1:
    week_one_refined = week_one_raw + W1
    week_two_refined = week_one_refined + W1
    week_three_refined = week_two_refined + W1
    week_four_refined = week_three_refined + W1
    week_to_pay_refined = week_four_refined + W1

if BOX_1 == 0:
    week_one_refined = week_one_raw
    week_two_refined = week_one_raw + W1
    week_three_refined = week_two_refined + W1
    week_four_refined = week_three_refined + W1
    week_to_pay_refined = week_four_refined + W1

if BOX_2 == 1:
    week_one_refined = week_one_refined
    week_two_refined = week_two_refined + W1
    week_three_refined = week_two_refined + W1
    week_four_refined = week_three_refined + W1
    week_to_pay_refined = week_four_refined + W1

if BOX_2 == 0:
    week_one_refined = week_one_refined
    week_two_refined = week_two_refined
    week_three_refined = week_three_refined
    week_four_refined = week_four_refined
    week_to_pay_refined = week_four_refined + W1

if BOX_3 == 1:
    week_one_refined = week_one_refined
    week_two_refined = week_two_refined
    week_three_refined = week_three_refined +W1
    week_four_refined = week_four_refined + W1
    week_to_pay_refined = week_four_refined + W1

if BOX_3 == 0:
    week_one_refined = week_one_refined
    week_two_refined = week_two_refined
    week_three_refined = week_three_refined
    week_four_refined = week_four_refined
    week_to_pay_refined = week_four_refined + W1

if BOX_4 == 1:
    week_one_refined = week_one_refined
    week_two_refined = week_two_refined
    week_three_refined = week_three_refined
    week_four_refined = week_four_refined +W1
    week_to_pay_refined = week_four_refined +W1

if BOX_4 == 0:
    week_one_refined = week_one_refined
    week_two_refined = week_two_refined
    week_three_refined = week_three_refined
    week_four_refined = week_four_refined
    week_to_pay_refined = week_four_refined + W1

print (week_one_refined)
print (week_two_refined)
print (week_three_refined)
print (week_four_refined)
print (week_to_pay_refined)


答案实际上似乎要复杂得多,但在实践中却很简单

按照流程图,我浏览了所有可能需要打开的复选框组合。最终看起来像是一场逆转的比赛。最后,使用嵌套for循环使其运行

对于感兴趣的用户,请参见以下代码:

import datetime
from datetime import datetime
from datetime import timedelta

FIXED_WEEK_1 = "16/04/2019" 


W1 = timedelta(days=7)
W2 = timedelta(days=14)
W3 = timedelta(days=21)
W4 = timedelta(days=28)
W5 = timedelta(days=35)
W6 = timedelta(days=42)
W7 = timedelta(days=49)
W8 = timedelta(days=56)

BOX_1 = 1
BOX_2 = 0
BOX_3 = 1
BOX_4 = 1

week_one_raw = datetime.strptime(FIXED_WEEK_1, '%d/%m/%Y')
week_one_refined = week_one_raw
week_two_refined = week_one_raw + W1
week_three_refined = week_two_refined + W1
week_four_refined = week_three_refined + W1
week_to_pay_refined = week_four_refined + W1

if BOX_1 == 0:
    week_one_refined = week_one_raw
    if BOX_2 == 0:
        week_two_refined = week_one_raw + W1
        if BOX_3 == 0:
            week_three_refined = week_one_raw + W2
            if BOX_4 == 0:
                week_four_refined = week_one_raw + W3
                week_to_pay_refined = week_one_raw + W4
            if BOX_4 == 1:
                week_four_refined = week_one_raw +W4
                week_to_pay_refined = week_one_raw +W5
        if BOX_3 == 1:
            week_three_refined = week_one_raw + W3
            if BOX_4 == 0:
                week_three_refined = week_one_raw +W3
                week_four_refined = week_one_raw +W4
                week_to_pay_refined = week_one_raw +W5
            if BOX_4 == 1:
                week_three_refined = week_one_raw +W4
                week_four_refined = week_one_raw +W5
                week_to_pay_refined = week_one_raw +W6

    if BOX_2 == 1:
        week_two_refined = week_one_raw + W2
        if BOX_3 == 0:
            week_two_refined = week_one_raw +W2
            if BOX_4 == 0:
                week_two_refined = week_one_raw + W2
                week_three_refined = week_one_raw +W3
                week_four_refined = week_one_raw +W4
                week_to_pay_refined = week_one_raw +W5
            if BOX_4 == 1:
                week_two_refined = week_one_raw +W3
                week_three_refined = week_one_raw +W4
                week_four_refined = week_one_raw +W6
                week_to_pay_refined = week_one_raw +W7
        if BOX_3 == 1:
            week_two_refined = week_one_raw +W3
            if BOX_4 == 0:
                week_two_refined = week_one_raw + W3
                week_three_refined = week_one_raw +W4
                week_four_refined = week_one_raw +W5
                week_to_pay_refined = week_one_raw +W6
            if BOX_4 == 1:
                week_two_refined = week_one_raw + W4
                week_three_refined = week_one_raw +W5
                week_four_refined = week_one_raw +W6
                week_to_pay_refined = week_one_raw +W7



if BOX_1 == 1:
    week_one_refined = week_one_raw + W1
    if BOX_2 == 0:
        week_one_refined = week_one_raw +W1
        if BOX_3 == 0:
            week_one_refined = week_one_raw +W1
            if BOX_4 ==0:
                week_one_refined = week_one_raw +W1
                week_two_refined = week_one_raw +W2
                week_three_refined = week_one_raw +W3
                week_four_refined = week_one_raw +W4
                week_to_pay_refined = week_one_raw +W5
            if BOX_4 ==1:
                week_one_refined = week_one_raw +W1
                week_two_refined = week_one_raw +W2
                week_three_refined = week_one_raw +W3
                week_four_refined = week_one_raw +W5
                week_to_pay_refined = week_one_raw +W6
        if BOX_3 ==1:
            week_one_refined = week_one_raw +W1
            if BOX_4 == 0:
                week_one_refined = week_one_raw +W1
                week_two_refined = week_one_raw +W2
                week_three_refined = week_one_raw +W4
                week_four_refined = week_one_raw +W5
                week_to_pay_refined = week_one_raw +W6
            if BOX_4 == 1:
                week_one_refined = week_one_raw +W1
                week_two_refined = week_one_raw +W2
                week_three_refined = week_one_raw +W5
                week_four_refined = week_one_raw +W6
                week_to_pay_refined = week_one_raw +W7

    if BOX_2 == 1:
        week_one_refined = week_one_raw + W2
        if BOX_3 == 0:
            if BOX_4 ==0:
                week_one_refined = week_one_raw +W2
                week_two_refined = week_one_raw +W3
                week_three_refined = week_one_raw +W4
                week_four_refined = week_one_raw +W5
                week_to_pay_refined = week_one_raw +W6
            if BOX_4 ==1:
                week_one_refined = week_one_raw +W2
                week_two_refined = week_one_raw +W3
                week_three_refined = week_one_raw +W4
                week_four_refined = week_one_raw +W6
                week_to_pay_refined = week_one_raw +W7
        if BOX_3 ==1:
            if BOX_4 ==0:
                week_one_refined = week_one_raw + W3
                week_two_refined = week_one_raw + W4
                week_three_refined = week_one_raw + W5
                week_four_refined = week_one_raw + W6
                week_to_pay_refined = week_one_raw + W7
            if BOX_4 ==1:
                week_one_refined = week_one_raw + W4
                week_two_refined = week_one_raw + W5
                week_three_refined = week_one_raw + W6
                week_four_refined = week_one_raw + W7
                week_to_pay_refined = week_one_raw + W8

为循环中的一些不一致表示歉意…如重复值。我花了一段时间才想出正确的方法。

当框1和框2=0时,这个方法有效当框1=1和框2=1时,这个方法有效当框1和框2都=1时,这个方法有效,但当框1=0和框2=1时,这个方法无效。您可以在代码中显示如何设置框1和框2的值,如何打印输出,您现在的输出是什么?您期望的输出是什么?感谢您的帮助…这是一个让我抓狂的简单错误…它工作正常,除非您连续选中两个框…它不会跳过两周
import datetime
from datetime import datetime
from datetime import timedelta

FIXED_WEEK_1 = "16/04/2019" 


W1 = timedelta(days=7)
W2 = timedelta(days=14)
W3 = timedelta(days=21)
W4 = timedelta(days=28)
W5 = timedelta(days=35)
W6 = timedelta(days=42)
W7 = timedelta(days=49)
W8 = timedelta(days=56)

BOX_1 = 1
BOX_2 = 0
BOX_3 = 1
BOX_4 = 1

week_one_raw = datetime.strptime(FIXED_WEEK_1, '%d/%m/%Y')
week_one_refined = week_one_raw
week_two_refined = week_one_raw + W1
week_three_refined = week_two_refined + W1
week_four_refined = week_three_refined + W1
week_to_pay_refined = week_four_refined + W1

if BOX_1 == 0:
    week_one_refined = week_one_raw
    if BOX_2 == 0:
        week_two_refined = week_one_raw + W1
        if BOX_3 == 0:
            week_three_refined = week_one_raw + W2
            if BOX_4 == 0:
                week_four_refined = week_one_raw + W3
                week_to_pay_refined = week_one_raw + W4
            if BOX_4 == 1:
                week_four_refined = week_one_raw +W4
                week_to_pay_refined = week_one_raw +W5
        if BOX_3 == 1:
            week_three_refined = week_one_raw + W3
            if BOX_4 == 0:
                week_three_refined = week_one_raw +W3
                week_four_refined = week_one_raw +W4
                week_to_pay_refined = week_one_raw +W5
            if BOX_4 == 1:
                week_three_refined = week_one_raw +W4
                week_four_refined = week_one_raw +W5
                week_to_pay_refined = week_one_raw +W6

    if BOX_2 == 1:
        week_two_refined = week_one_raw + W2
        if BOX_3 == 0:
            week_two_refined = week_one_raw +W2
            if BOX_4 == 0:
                week_two_refined = week_one_raw + W2
                week_three_refined = week_one_raw +W3
                week_four_refined = week_one_raw +W4
                week_to_pay_refined = week_one_raw +W5
            if BOX_4 == 1:
                week_two_refined = week_one_raw +W3
                week_three_refined = week_one_raw +W4
                week_four_refined = week_one_raw +W6
                week_to_pay_refined = week_one_raw +W7
        if BOX_3 == 1:
            week_two_refined = week_one_raw +W3
            if BOX_4 == 0:
                week_two_refined = week_one_raw + W3
                week_three_refined = week_one_raw +W4
                week_four_refined = week_one_raw +W5
                week_to_pay_refined = week_one_raw +W6
            if BOX_4 == 1:
                week_two_refined = week_one_raw + W4
                week_three_refined = week_one_raw +W5
                week_four_refined = week_one_raw +W6
                week_to_pay_refined = week_one_raw +W7



if BOX_1 == 1:
    week_one_refined = week_one_raw + W1
    if BOX_2 == 0:
        week_one_refined = week_one_raw +W1
        if BOX_3 == 0:
            week_one_refined = week_one_raw +W1
            if BOX_4 ==0:
                week_one_refined = week_one_raw +W1
                week_two_refined = week_one_raw +W2
                week_three_refined = week_one_raw +W3
                week_four_refined = week_one_raw +W4
                week_to_pay_refined = week_one_raw +W5
            if BOX_4 ==1:
                week_one_refined = week_one_raw +W1
                week_two_refined = week_one_raw +W2
                week_three_refined = week_one_raw +W3
                week_four_refined = week_one_raw +W5
                week_to_pay_refined = week_one_raw +W6
        if BOX_3 ==1:
            week_one_refined = week_one_raw +W1
            if BOX_4 == 0:
                week_one_refined = week_one_raw +W1
                week_two_refined = week_one_raw +W2
                week_three_refined = week_one_raw +W4
                week_four_refined = week_one_raw +W5
                week_to_pay_refined = week_one_raw +W6
            if BOX_4 == 1:
                week_one_refined = week_one_raw +W1
                week_two_refined = week_one_raw +W2
                week_three_refined = week_one_raw +W5
                week_four_refined = week_one_raw +W6
                week_to_pay_refined = week_one_raw +W7

    if BOX_2 == 1:
        week_one_refined = week_one_raw + W2
        if BOX_3 == 0:
            if BOX_4 ==0:
                week_one_refined = week_one_raw +W2
                week_two_refined = week_one_raw +W3
                week_three_refined = week_one_raw +W4
                week_four_refined = week_one_raw +W5
                week_to_pay_refined = week_one_raw +W6
            if BOX_4 ==1:
                week_one_refined = week_one_raw +W2
                week_two_refined = week_one_raw +W3
                week_three_refined = week_one_raw +W4
                week_four_refined = week_one_raw +W6
                week_to_pay_refined = week_one_raw +W7
        if BOX_3 ==1:
            if BOX_4 ==0:
                week_one_refined = week_one_raw + W3
                week_two_refined = week_one_raw + W4
                week_three_refined = week_one_raw + W5
                week_four_refined = week_one_raw + W6
                week_to_pay_refined = week_one_raw + W7
            if BOX_4 ==1:
                week_one_refined = week_one_raw + W4
                week_two_refined = week_one_raw + W5
                week_three_refined = week_one_raw + W6
                week_four_refined = week_one_raw + W7
                week_to_pay_refined = week_one_raw + W8