Узнайте, сколько секунд назад вы используете Python (и объяснение кода)

import datetime
while True:
    try:
        bday = input("Please enter your exact Date of Birth(eg.               March 6 2004):")
        birthday = datetime.datetime.strptime(bday, '%B %d %Y')
        break
    except:
        print("Please put in the Format 'Month Day Year' without any initial space")

tday = datetime.datetime.today()
timedelta = (tday - birthday).total_seconds()
print("You have been alive for:",timedelta,"seconds")

Код может показаться сложным, но как только я объясню его логику, вы поймете, насколько он прост на самом деле. Во-первых, мы импортируем модуль datetime, написав «import datetime», это позволяет нам использовать методы из библиотеки datetime. Метод — это инструкция, точно так же, как + складывает окружающие его переменные, метод будет выполнять вычисления или получать значение, выполняя некоторый процесс инструкций.

Команда while — это форма проверки ошибок, чтобы убедиться, что программа не вылетит, если пользователь введет ошибочные данные. Я использую метод try и exc, чтобы убедиться, что мы получаем правильный формат ввода дня рождения, чтобы мы могли выполнить правильные вычисления. Попробуйте и за исключением работы, запустив часть кода попытки, и если в коде есть ошибка (в данном случае из-за ошибочного ввода), он остановит выполнение кода попытки с точки, где произошла ошибка, и перейдет к коду исключения . Это важно, так как мы не хотим, чтобы команда break выполнялась до тех пор, пока мы не получим правильный ввод. Для более конкретных форм проверки вы можете захотеть поместить условие в оператор исключения. Таким образом, в этом примере вы можете заменить «except:» на «except ValueError:», чтобы код исключения работал только при этом конкретном типе ошибки. Это полезно, если в пробном коде есть разные причины ошибок, и вы хотите помочь конечному пользователю диагностировать ошибку.

В коде попытки мы делаем:

bday = input("Please enter your exact Date of Birth(eg. March 6 2004):")
birthday = datetime.datetime.strptime(bday, '%B %d %Y')
break

Итак, мы назначаем переменную как bday. Это означает, что мы заставляем людей вводить день рождения. Для простоты ввода, а также для упрощения проверки я сделал это в виде письменной даты, а не числового ввода. Вы можете игнорировать отступ, например. 6 марта 2004 г., как и в python, вы можете написать это в 1 строку, а на среде это заставляет его перейти на новую строку.

birthday = datetime.datetime.strptime(bday, '%B %d %Y')

Эта команда пытается преобразовать наш ввод, например. 6 марта 2004 г. в формате ММ-ДД-ГГГГ, мы можем легко сделать это, используя метод datetime.datetime.strptime(x,’…’). В скобках x будет представлять переменную (написанную дату), которую вы хотите преобразовать, а «…» представляет формат, в котором вы хотите, чтобы она была возвращена. «%B» представляет месяц, «%d» представляет день, а «%Y» представляет год. Вы просто должны узнать, как они представлены, но если вы поищете инструкцию, вы найдете список всех возможных форматов, которые вы можете использовать.

Если ввод правильный:

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

print("Please put in the Format 'Month Day Year' without any initial space")

Код ошибки просто печатает подсказку о том, что они ввели неправильный формат. Поскольку мы находимся в цикле while true, эта попытка и исключение будет повторяться до тех пор, пока ввод не будет действительным.

break

Когда входные данные верны, это означает, что весь код try будет выполнен, включая прерывание в конце. Разрыв выведет нас из цикла while, поскольку он буквально разрывает цикл.

tday = datetime.datetime.today()
timedelta = (tday - birthday).total_seconds()
print("You have been alive for:",timedelta,"seconds")

переменная tday использует другой метод из библиотеки datetime. Обратите внимание, что мы поместили дату и время дважды, первый раз указывает библиотеку, а второй объявляет тип данных datetime, а затем сегодня вернет точное время и дату во время выполнения кода.

Важно указать дату и время во второй раз в строке tday, потому что если бы это было не так, мы получили бы ошибку в следующей строке. Дельта времени вычисляет время между двумя датами. Поскольку и tday, и день рождения являются датой и временем, мы можем просто вычесть их, и нам будет возвращено количество дней. Чтобы преобразовать это в секунды, мы используем другой метод в библиотеке datetime, который является .totalseconds(), который преобразует все, что ему предшествует, в секунды. Следовательно, он преобразует разницу в днях в секунды, которые будут равны тому, сколько секунд вам будет. Наконец, оператор печати возвращает это значение конечному пользователю в удобном для пользователя формате.

Этот код был особенно крут, потому что я обнаружил, что буквально через 6 дней моей маме будет 1,5 миллиарда секунд!