Сравнение Ints, сцепленных из строк в Python - PullRequest
0 голосов
/ 25 апреля 2019

Поэтому я пытаюсь написать программу на 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.Поскольку я не могу сравнить их с> или <, как я могу это сделать? </p>

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Разбор дат и времени не стоит делать вручную.Ваш код пытается индексировать в целое число с 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
0 голосов
/ 25 апреля 2019

Попробуйте добавить это:

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.

...