print("00:00:00"<"24:00:00")
这是真的。但是,这样比较盘中时间合法吗?我的意思是,蟒蛇明白我指的是时间吗?(或者至少这些字符串在大小方面是"相似"的数字(
您在技术上比较两个str对象(string/text(。如果您使用24小时格式,这可能是有效的:
type("00:00:00") # str i.e. string, not time
"09:00:00"<"21:00:00" # True
"12:00:00 pm" < "11:00:00 pm" # False
编辑:由于下午12点出现异常,删除了最初的上午/下午建议。
第一个
24不是一个合法的小时,它应该是";0-23";
第二个
在你看来,这是合法的。我的意思是你的时间格式是";hh:mm:ss";。它可以像你所做的那样通过字符串进行比较。
第三个
我有一个比较时间的常用方法。它需要python-dateutil
包。
通过pipinstall-python-dateutil 安装包
然后
from dateutil.parser import parse
print(parse("00:00:00")<parse("23:00:00"))
Python不理解这些字符串表示时间。它只知道它们是字符串。Python在创建字符串时不会进行任何类型的字符串解析来解释您的意思——这对于99.9%的用例来说是非常低效和不必要的。
也就是说,有一些内置的转换,您可以调用它们将字符串转换为其他类型。一个简单的例子是从字符串到浮点的转换。在这种情况下,您明确地告诉Python以特定的方式解释字符串,这就是它工作的原因:
float("5.3") # Returns 5.3 as a floating point number
时间比较之所以有效,是因为Python将通过从字符串的开头开始查看每个字符,并比较这些字符的ASCII值来比较字符串。本质上,Python将根据字母顺序(更准确地说,基于ASCII值(来比较字符串。在您的示例中,将比较的第一个字符是'0'
和'2'
。字符'2'
的ASCII值为50,大于'0'
的ASCII值48。在这一点上,Python已经可以得出结论,第二个字符串比第一个字符串大,因此它返回True
。如果这两个字符是相同的,它将继续从左到右读取,直到它可以决定哪个字符串是";较少";。
有关ASCII代码的详细信息,请参阅ASCII表。