如何在 python 中处理模中的 0
How to deal with 0 in modulo in python
我想创建代码,根据经过的小时数告诉我现在是什么日期。
我不想导入任何库我只想自己计算。我希望代码能够灵活处理任何 snodiy(一年中的简单天数)、nohiod(一天中的小时数)和我给它的月数。只有绝对是小时,它总是相同的并且有 60 分钟。
下面的代码工作得很好,但问题是我有 13 (0-12) 而不是 12 个月,我不知道如何以最有效的方式处理 0。下面的例子。我有 0 天 0 个月和正确年份(2016 年)的小时数。
dev = True
# simple number of days in year
snodiy = 365.25
# number of hours in one day
nohiod = 24
# total hours passed
# 17672256 current year
thp = 17672257
dayc = 30 # number of days in a month #
# get date
def gd():
year = (thp / snodiy) / nohiod
rest = thp % (snodiy * nohiod)
if dev:
print("dev year rest:", rest)
month = rest / (dayc * nohiod)
rest %= (dayc * nohiod)
if dev:
print("dev month rest:", rest)
day = rest / nohiod
rest %= nohiod
if dev:
print("dev hour rest:", rest)
hour = rest
if dev:
print("Year:", "%d" % year)
print("Month:", "%d" % month)
print("Day:", "%d" % day)
print("Hour:", "%d" % hour)
print("Hour:", "%d" % hour, "of", "%d" % day, "%d" % month, "%d" % year)
gd()
我假设我们不受现实世界时间问题的所有约束,例如闰年、闰秒、DST 等。如果是,那么您正在在一项极其重要的任务上,正如其他人所提到的,您最好将其留给图书馆。继续...
问题的本质是你隐含地假设一年恰好是 12 个月。您将一年定义为 365.25 * 24 = 8766
小时。您将一个月定义为 30 * 24 = 720
小时。 12 个月将是 720 * 12 = 8640
小时。您的一年超过 12 个月,因此您在计算中得到第 13 个月也就不足为奇了。
你太紧张了。您需要做以下三件事之一:
dayc = snodiy / 12
snodiy = dayc * 12
- 接受(并能够处理)一年中并非恰好有 12 个月的事实。
我想创建代码,根据经过的小时数告诉我现在是什么日期。
我不想导入任何库我只想自己计算。我希望代码能够灵活处理任何 snodiy(一年中的简单天数)、nohiod(一天中的小时数)和我给它的月数。只有绝对是小时,它总是相同的并且有 60 分钟。
下面的代码工作得很好,但问题是我有 13 (0-12) 而不是 12 个月,我不知道如何以最有效的方式处理 0。下面的例子。我有 0 天 0 个月和正确年份(2016 年)的小时数。
dev = True
# simple number of days in year
snodiy = 365.25
# number of hours in one day
nohiod = 24
# total hours passed
# 17672256 current year
thp = 17672257
dayc = 30 # number of days in a month #
# get date
def gd():
year = (thp / snodiy) / nohiod
rest = thp % (snodiy * nohiod)
if dev:
print("dev year rest:", rest)
month = rest / (dayc * nohiod)
rest %= (dayc * nohiod)
if dev:
print("dev month rest:", rest)
day = rest / nohiod
rest %= nohiod
if dev:
print("dev hour rest:", rest)
hour = rest
if dev:
print("Year:", "%d" % year)
print("Month:", "%d" % month)
print("Day:", "%d" % day)
print("Hour:", "%d" % hour)
print("Hour:", "%d" % hour, "of", "%d" % day, "%d" % month, "%d" % year)
gd()
我假设我们不受现实世界时间问题的所有约束,例如闰年、闰秒、DST 等。如果是,那么您正在在一项极其重要的任务上,正如其他人所提到的,您最好将其留给图书馆。继续...
问题的本质是你隐含地假设一年恰好是 12 个月。您将一年定义为 365.25 * 24 = 8766
小时。您将一个月定义为 30 * 24 = 720
小时。 12 个月将是 720 * 12 = 8640
小时。您的一年超过 12 个月,因此您在计算中得到第 13 个月也就不足为奇了。
你太紧张了。您需要做以下三件事之一:
dayc = snodiy / 12
snodiy = dayc * 12
- 接受(并能够处理)一年中并非恰好有 12 个月的事实。