Проверка того, что время unix находится между двумя другими временными метками unix в python3 - PullRequest
0 голосов
/ 13 октября 2018

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

#Ask for the UNIX execution time. 
execution_time = input("When do you want to execute your command?: ")
if len(execution_time) <=0:
    print("Error: You have set a UNIX-time")
if (time.time()) < execution_time < (time.time())+1.2e6:
    print("The execution time is valid")
if execution_time < (time.time()):
    print("The execution time is in the past")
if execution_time > (time.time())+1.2e6:
    print("Error:The execution time is more than 2 weeks into the future")

Однако ошибка, которую я получаю:

     Traceback (most recent call last): 
     File "flightplanner.py", line 38, in <module>
     if (time.time()) < execution_time < (time.time())+1.2e6:
     TypeError: '<' not supported between instances of 'float' and 'str'

Я только начинаю учиться программировать, поэтому есть много операторов if, что, вероятно, не очень хорошая идея,но это очень маленький кусочек кода.

Спасибо за любую помощь, которую вы можете мне оказать.

Best Hasse

1 Ответ

0 голосов
/ 13 октября 2018

Код ошибки говорит, что вы пытаетесь использовать «<» для сравнения строки (фрагмента текста) с плавающей точкой (число).Для переводчика это как если бы вы сказали, что <em>«Hello World» меньше 7? Конечно, в вашем случае более вероятно, что ваше высказывание «1000000000» меньше 118483939? Так что же?Вы должны сделать это, взяв ввод, и сказать Python, что он должен интерпретировать его как число.Вы делаете это, используя

float (execute_time)

Если вам нужен совет, я бы рекомендовал также использовать elif (сокращение от else, если) и еще .Пример:

if(num == 1):
    print(“Your number was 1”)
elif(num == 2):
    print(“Your number was 2”)
else:
    print(“Your number was not 1 or 2”)

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

Еще одна вещь, которую я хотел бы изменить, - это поместить время в переменную один раз, а затем использовать его для сравнения.Это (я думаю) очень немного быстрее и сделает его более читабельным.

Примечание: каждый раз, когда я говорю о «быстрее», это не будет иметь каких-либо заметных различий в вашемпрограмма.Ваша программа должна работать почти мгновенно, но вы можете себе представить, что в более длинных программах, где вы часто это используете, или в программах, в которых важен каждый выигрыш в производительности, это может иметь значение, поэтому лучше изучить это с самого начала.

...