Как пропустить даты в Python, используя флажки - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть 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 равно единице, а поле два равно нулю
  • вывод неправильный, если Box 1 равен нулю, а Box 2 равен единице, поскольку он пропускает week_one_refined возвращает на неделю раньше, чем он должен делать.

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Ответ на самом деле казался гораздо более сложным и все же простым на практике.

Следуя блок-схеме, я прошел через все возможные комбинации флажков, которые необходимо включить. Завершая, похоже на перевернутый турнир. В конце концов, для его работы потребовались вложенные циклы.

Для тех, кто заинтересован, смотрите код ниже:

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

Извинения за некоторые несоответствия в циклах ... как при дублировании значений. Мне понадобилось некоторое время, чтобы найти правильный метод.

0 голосов
/ 15 апреля 2019
if BOX_2 == 1:
    week_one_refined = week_one_refined

ошибка в коде.


#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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...