Как преобразовать значения времени (в строке) в datetime в python? - PullRequest
0 голосов
/ 23 апреля 2020

, поэтому я пытался работать над оператором, в котором я должен принимать значение времени от пользователя, и если оно находится между определенными значениями времени, я должен приветствовать пользователя добрым утром! Хорошим после полудня Добрый вечер и спокойной ночи. Пользователь будет вводить время в формате ЧЧ: ММ: СС. мой код для функции выглядит примерно так:

r = datetime.time(12, 00, 00)
t = datetime.time(18, 00, 00)
u = datetime.time(6, 00, 00)
p = datetime.time(23, 59, 00)
def my_function:
time=input('what is the time?')
    if datetime.datetime.strptime(time, '%H:%M:%S')>=u and datetime.datetime.strptime(time, '%H:%M:%S')<r:
        print('Morning')
    elif datetime.datetime.strptime(time, '%H:%M:%S')>=r and datetime.datetime.strptime(time, '%H:%M:%S')<t:
        print('Afternoon')
    elif datetime.datetime.strptime(time, '%H:%M:%S')>=t and datetime.datetime.strptime(time, '%H:%M:%S')<p:
        print('Evening')
    elif datetime.datetime.strptime(time, '%H:%M:%S')>=p and datetime.datetime.strptime(time, '%H:%M:%S')<u:
        print('Night')
    else:
        return 'invalid'

Я вернулся с данными времени ошибки 'Сколько времени?' не соответствует формату "% H:% M:% S", когда я пытаюсь вызвать функцию. Может кто-нибудь дать какие-либо предложения о том, как изменить мой код или что я делаю неправильно? заранее спасибо

edit: выдает ошибку '> =', которая не поддерживается между экземплярами datetime.datetime и datetime.time

Ответы [ 3 ]

1 голос
/ 23 апреля 2020
def my_function():

    r = datetime.time(12, 00, 00)
    t = datetime.time(18, 00, 00)
    u = datetime.time(6, 00, 00)
    p = datetime.time(23, 59, 00)

    time = input('what is the time?')
    time = datetime.datetime.strptime(time, '%H:%M:%S').time()

    if u <= time < r:
        return('Morning')
    elif r <= time < t:
        return('Afternoon')
    elif t <= time < p:
        return('Evening')
    elif p <= time or time < u:
        return('Night')
    else:
        return 'invalid'

 print(my_function())
0 голосов
/ 23 апреля 2020
time = input('What is the time?"

прямо сейчас, вы устанавливаете время равное python кортежу с одной строкой внутри него ... "Где время?". Кортеж похож на список, но с () вместо [].

Когда вы передаете переменную 'time' в datetime, вы в буквальном смысле передаете следующее: ("Сколько времени ? ")

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

0 голосов
/ 23 апреля 2020

Я думаю, что вам не хватает input('what is the time'), поэтому ваша переменная является строковым вопросом, а не тем, что вы вводите в терминал / вызываете свою функцию. Кроме того, приведенный выше код требует отступа после определения функции.

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