Как использовать время в качестве триггера для государства в простой программе планирования обучения - PullRequest
0 голосов
/ 04 июля 2019

Это мой первый проект на Python, и я пытаюсь сделать учебное напоминание, которое скажет мне переключаться между пассивным и активным обучением, и я надеюсь в дальнейшем заставить его реагировать на ввод через интерфейс, но сейчас я хочуиспользовать time.localtime (time.time ()), чтобы получить метку времени, целое число, которое является четным / неравномерным часом текущего.Я мог бы просто посмотреть на часы, но это должно дать мне какой-то результат, например, два разных цвета, но это не важно, моя тренировочная платформа.Так, как я могу получить целые числа через время.Я пробовал несколько разных идей.

Ну, этот код фрагментирован, но в любом случае это то, где я сейчас нахожусь.Это некоторая комбинация функции и списка, который вообще не готов, это всего лишь фрагменты различных тестов.

Это методы, которые я изучал, но я не смог сделать ни одного изон вытаскивает что угодно из любого временного модуля, который я пробовал.Возможно это просто не было видно / напечатано.

Booleans


if / else


if num % 2 == 0:
    pass # Even 
else:
    pass # Odd

Условия Python и предложения If Python поддерживает обычные логические условия математики: * равно: a == b * Не равно: a! = b * Меньше чем: a b

* Больше или равно: a> = b

import datetime

print ("Current date and time: " , datetime.datetime.now())

    def time_even_or_uneven():
        if datetime.datetime.now % 2 == 0:
            print("Number is even")
        else:
            print("Number is odd")

#This is where my questions start
# Uncomplete test code
# I´m trying to find a way to start off a function and later on several # functions from the timestamp I get from the code above. 

            print(datetime.datetime.now % 2 = 0)


import datetime...
    File "", line 12
        print(datetime.datetime.now % 2 = 0)
         ^
SyntaxError: keyword can't be an expression

Без неисправной строки я получаю метку времени из модуля времени:

Текущая дата и время: 2019-07-04 13: 58: 15.811722

Я ничего не вижу из функции "time_even_or_uneven"

Ответы [ 4 ]

1 голос
/ 04 июля 2019

Попробуйте использовать:

    datetime.datetime.now().time().hour%2==0
    or
    datetime.datetime.now().time().minute%2==0
    or
    datetime.datetime.now().time().second%2==0
0 голосов
/ 05 июля 2019
#This is how the code looks now thanks to a combination of helpful comments:
#Thanks Rahul. Thanks Dan. Thanks Rishu.

import datetime

print ("Current date and time: " , datetime.datetime.now())

# Gives me a True/False output
datetime.datetime.now().hour%2==0

if datetime.datetime.now().hour%2 == 0:
        print("You could consider some active training the next hour")
else:
        print("You could consider some passive studies the next hour")
0 голосов
/ 04 июля 2019

С вашим кодом много ошибок. Ошибка, которую вы получаете, заключается в том, что вы используете один = вместо двойного ==. Одиночный предназначен для присваивания, и вы не можете сделать это как выражение.

Но после исправления вы сразу же нажмете другую ошибку, потому что datetime.datetime.now - это функция. таким образом % не определено. Вместо этого вызовите `` datetime.datetime.now () `, чтобы получить значение, возвращаемое функцией вместо объекта функции.

Однако это все равно не будет работать, поскольку datetime.datetime.now() - это объект datetime.datetime, в основном кортеж целых чисел, который также не определяет %. Поэтому вместо этого получите дни или секунды или что-то, что является целым числом, т. Е. datetime.datetime.now().second % 2 == 0 действительно для проверки четной секунды.

Но прежде чем что-либо из этого, вам нужно спросить себя, что означает четная дата? Для этого нет стандартного определения, поэтому вам нужно определить его более четко, чтобы читатели вашего кода понимали, что вы подразумеваете под ним.

Для ясности, вот все эти шаги с каждым из сообщений об ошибках:

Использование = вместо ==:

print(datetime.datetime.now % 2 = 0)
  File "<ipython-input-17-9fea3c9eff3e>", line 1
    print(datetime.datetime.now % 2 = 0)
         ^ SyntaxError: keyword can't be an expression

Попытка применить % к объекту функции, а не к возвращаемому значению функции (т.е. оставляя ()):

print(datetime.datetime.now % 2 == 0)
Traceback (most recent call last):
  File "/Users/dgolding/PycharmProjects/dsdk-pg/venv/lib/python3.6/site-packages/IPython/core/interactiveshell.py",

строка 2963, в run_code exec (code_obj, self.user_global_ns, self.user_ns) Файл "", строка 1, в печать (datetime.datetime.now% 2 == 0) Ошибка типа: неподдерживаемые типы операндов для%: 'builtin_function_or_method' и 'int'

Попытка применить % к объекту datetime

print(datetime.datetime.now() % 2 == 0)
Traceback (most recent call last):
  File "/Users/dgolding/PycharmProjects/dsdk-pg/venv/lib/python3.6/site-packages/IPython/core/interactiveshell.py",

строка 2963, в run_code exec (code_obj, self.user_global_ns, self.user_ns) Файл "", строка 1, в print (datetime.datetime.now ()% 2 == 0) Ошибка типа: неподдерживаемые типы операндов для%: 'datetime.datetime' и 'int'

Наконец, что-то допустимое, применяя % к целому числу:

print(datetime.datetime.now().second % 2 == 0)
True
0 голосов
/ 04 июля 2019

Поскольку «datetime.datetime.now» возвращает значение объекта с адресом его памяти.

...