比较从Python中的字符串连接的整数

时间:2019-04-25 03:25:13

标签: python string int comparison concatenation

因此,我尝试使用Python编写程序,该程序将在一定时间后发送文本提示。我正在尝试检查时间是否在实际范围内(即一天不超过或少于24小时),但是尝试进行比较时却出现错误。我无法比较从字符串连接的整数。

dur = input("How long do you want to wait (EX: HHMMSS): ")
hours = int(dur[0:1])
minutes = int(dur[2:3])
seconds = int(dur[4:5])
print(hours)
print(minutes)
print(seconds)

for n in range(0, LOOP):
    if(count == 0):
        # Check if hours is realistic
        if(hours > 0 and hours < 24 and str(hours[0]) == 0):
            hours = hours[1]
            count += 1

我得到一个TypeError说> str和int的实例之间不支持。由于无法将它们与>或<进行比较,我该怎么做?

2 个答案:

答案 0 :(得分:0)

尝试添加此内容:

hours = int(dur[0:2])
minutes = int(dur[2:4])
seconds = int(dur[4:6])

for n in range(0, LOOP):
    if(count == 0):
        # Check if hours is realistic
        if(hours > 0 and hours < 24 and hours < 10):
            ...

另一件事,您不能使用hours = hours[1] 因为'int' object is not subscriptable

答案 1 :(得分:0)

不宜手动解析日期和时间。您的代码尝试使用hours[0]索引为整数。没有强制转换,字符串和整数类型是不可比的。

尝试使用Python的datetime模块,特别是strptime函数,该函数从格式化的字符串中解析日期。您可以使用timedelta提取小时,分钟,秒,轻松进行比较并添加/减去时间。

from datetime import datetime

while 1:
    try:
        dur = input("How long do you want to wait (EX: HHMMSS): ")
        dt = datetime.strptime(dur, "%H%M%S")
        print(dt, " hour:", dt.hour, " min:", dt.minute, " sec:", dt.second)        
        break
    except ValueError:
        print("Invalid time.")

样品运行:

How long do you want to wait (EX: HHMMSS): 012261
Invalid time.
How long do you want to wait (EX: HHMMSS): 012251
1900-01-01 01:22:51  hour: 1  min: 22  sec: 51