我正在尝试创建一个小的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语句可能不是一个好主意,但这只是一小段代码。
谢谢您能给我的帮助。
最佳 哈斯
答案 0 :(得分:0)
错误代码表示您尝试使用“ <”将字符串(一段文本)与一个浮点数(一个数字)进行比较。对口译员来说,就像您在说“ Hello World”小于7吗? 当然,根据您的情况,您更有可能说的是“ 1000000000”比118483939小吗? 因此,您要做的就是获取输入,并告诉python它应该将其解释为数字。您可以使用
float(execution_time)
如果您需要建议,我也建议您使用 elif (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 的另一个优点是,即使其他测试没有成功,它也将始终运行,即使您甚至没有考虑过或者太懒而无法输入。
我要更改的另一件事是将时间一次放入一个变量,然后将其用于比较。 (我认为)这会稍微快一点,并使它更具可读性。
注意:每次我所说的“更快”都不会对您的程序产生任何明显的影响。您的程序应该立即运行,但是您可以想象,在较长的程序(经常使用该程序)或每个性能都至关重要的程序中,这可能会有所作为,因此最好从头开始学习。>