Мне нравится другой ответ здесь, и в основном для использования математики даты вместо операторов даты агрегации, которые, хотя полезно, также могут быть немного неясными.
Единственное, что я хочу добавить здесь, это то, что вы также можете вернуть объект Date
из структуры агрегации таким подходом, в отличие от «числовой» метки времени. Это лишь небольшая дополнительная математика на тех же принципах, используя $add
:
db.collection.aggregate([
{ "$group": {
"_id": {
"$add": [
{ "$subtract": [
{ "$subtract": [ "$current_date", new Date(0) ] },
{ "$mod": [
{ "$subtract": [ "$current_date", new Date(0) ] },
1000 * 60 * 15
]}
] },
new Date(0)
]
},
"count": { "$sum": 1 }
}}
])
Контексты Date(0)
в JavaScript здесь представляют ту же самую «эпоху» в более короткая форма, так как 0 миллисекунд от эпохи - эпоха. Но главное, что когда «добавление» к другому объекту даты BSON выполняется с числовым идентификатором, тогда обратное к описанному условию истинно, и конечный результат на самом деле теперь является Date
.
Все драйверы вернут родной тип Date
на свой язык с помощью этого подхода.
Вы близки. Необходимо звонить main
в файл Python для фактического выполнения его в первый раз, когда скрипт запущен
def main():
number=int(input("Please enter an integer between 0 and 127: "))
if number>127 or number<0 :
print("I'm sorry, that is not an acceptable value. Please try again")
main()
elif number<=127 and number>=0 :
print("WIP")
else:
print("I'm sorry, something went wrong. Please try again and be sure to enter an integer between 0 and 127.")
main()
main()
попробуйте это как другой метод кодирования вашей программы:
while True:
number=int(input("Please enter an integer between 0 and 127: "))
if number>127 or number<0 :
print("I'm sorry, that is not an acceptable value. Please try again")
elif number<=127 and number>=0 :
print("WIP")
break
else:
print("I'm sorry, something went wrong. Please try again and be sure to enter an integer between 0 and 127.")
Добро пожаловать в кодирование! Это - аккуратная попытка попытки решить проблему. Чтобы заставить это работать, необходимо удостовериться, что вызвали основную функцию в нижней части кода (функции не будут работать, если Вы не скажете им!
def main():
number=int(input("Please enter an integer between 0 and 127: "))
if number>127 or number<0 :
print("I'm sorry, that is not an acceptable value. Please try again")
main()
elif number<=127 and number>=0 :
print("WIP")
else:
print("I'm sorry, something went wrong. Please try again and be sure to enter an integer between 0 and 127.")
main()
main()
, В то время как это будет работать, это могло бы вызвать проблемы в будущем. Я предложил бы использовать while
цикл для этого:
while True:
number=int(input("Please enter an integer between 0 and 127: "))
if number>127 or number<0 :
print("I'm sorry, that is not an acceptable value. Please try again")
elif number<=127 and number>=0 :
print("WIP")
break;
else:
print("I'm sorry, something went wrong. Please try again and be sure to enter an integer between 0 and 127.")
while
цикл будет работать как условие, которое Вы даете ему, true
. Вы можете break
из цикла рано... хорошо, с помощью break
ключевое слово.