如何使用复选框跳过Python中的日期
我有4个复选框,每个复选框代表一个日期,例如:如何使用复选框跳过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
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