检查 unix 时间是否在 python3 中的其他两个 unix 时间戳之间

Checking that a unix time is between two other unix timestamps in python3

我正在尝试创建一个小的 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 语句,这可能不是一个好主意,但它是一小段代码。

谢谢你能给我的任何帮助。

最佳 哈塞

错误代码表示您尝试使用“<”将字符串(一段文本)与浮点数(数字)进行比较。对于口译员来说,就像你在说 “Hello World”是否小于 7? 当然,在您的情况下,您所说的 是“1000000000” 小于 118483939 的可能性更大? 所以你要做的就是接受输入,并告诉 python 它应该将它解释为一个数字。您使用

执行此操作

float(execution_time)

如果您需要一些建议,我建议您也使用 elif(else if 的缩写)和 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 的另一个优点是,如果其他测试不成功,它总是 运行,即使在您甚至没有想到或懒得输入的情况下.

我要更改的另一件事是将时间放入变量一次,然后将其用于比较。这(我认为)速度非常快,并且会使其更具可读性。

注意: 每次我谈论“更快”时,它不会对您的程序产生任何明显的影响。你的程序应该 运行 接近瞬时,但你可以想象在较长的程序中,你经常使用它,或者在每个性能提升都很重要的程序中,这会有所不同,所以最好从开始.