我想撰寫一個函式,該函式將在交替的日期時間日冪等地輸出 True 或 False,從非特定日期開始并無限期地繼續。
例如,傳遞代表 10 月 1 日的日期時間可能會輸出 True,然后 10 月 2 日將輸出 False,然后 10 月 3 日將輸出 True,依此類推......應該可以將任何日期時間傳遞給此函式并始終得到相同的結果約會時間。
它應該看起來像:
def date_check(date_to_check):
if [condition related to date_to_check]:
return True
else:
return False
我只是無法弄清楚在交替的日子里總是回傳 True 或 False 的條件應該是什么。
我考慮過根據星期幾進行計算,但由于一周中有奇數天,這是不可能的。我考慮過根據一個月中的某一天是否為奇數進行計算,但這不起作用,因為包含 31 天的月份將連續產生兩個奇數天(31 天和 1 天)。
編輯:我還考慮過根據一年中的某一天是否為奇數進行計算,但又一次:第 365 天和第 1 天將連續產生相同的值。
有沒有辦法做到這一點?
uj5u.com熱心網友回復:
為此,我們需要一個日歷表示,它只計算天數而不考慮其他任何事情——沒有幾周、幾個月或幾年。瀏覽datetime模塊檔案,一種可能性似乎是date.toordinal()方法。然后我們以通常的方式檢查該數字是奇數還是偶數。
def date_check(date_to_check):
return date_to_check.toordinal() % 2 == 0
筆記:
- 要反轉序列,請使用
!=而不是== - 原則上,如果需要,您需要檢查這是否適用于 BC 日期;在實踐中,日歷幾乎沒有那么長的統一(幾個世紀以來跳過和增加了幾天),所以如果你需要它在很早以前作業,你將不得不做更多的作業。
uj5u.com熱心網友回復:
也許從一些開始BASE_DATE,然后檢查該日期與您傳遞的輸入之間的天數 -
import datetime as dt
def alt_true_false(date_to_check):
BASE_DATE = dt.date(2022, 10, 1)
if (date_to_check - BASE_DATE).days % 2:
return False
return True
輸出
alt_true_false(dt.date(2022, 10, 2))
# False
alt_true_false(dt.date(2022, 10, 3))
# True
alt_true_false(dt.date(2027, 10, 3))
# True
alt_true_false(dt.date(2026, 10, 3))
# False
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/521389.html
標籤:Python约会时间
