需要注意负数的舍入,不能直接用//运算符,这里的处理是用浮点数除法后取整,其他单复数、前后缀和冠词都可以用字符串乘法处理。
最终代码有四行。
代码长度:276字节 vs. 全站第一:224字节。
import sys,bisect as b
d=86400
t=[1,60,3600,d,d*7,d*30,d*365]
for s in map(int,sys.argv[1:]):k=b.bisect(t,abs(s))-1;n=abs(int(s/t[k]));print(["in "*(s>0)+[str(n),"a"+"n"*(k==2)][n==1]+" "+"second minute hour day week month year".split()[k]+"s"*(n>1)+" ago"*(s<0),"now"][s==0])
|