Mam problem odłogowania, Im powinien uzyskać dane wejściowe użytkownika w postaci 10:10:10
(hh: mm: ss) lub 10:10
(mm: ss) lub 10
(SS). Teraz potrzebuję sprawdzić parametry odłogowania:Python: sprawdzania poprawności danych wejściowych Czas
- Jeśli otrzymam tylko sekundy, to nie ma limitu.
- Jeśli otrzymam
mm:ss
, sekundy są ograniczone do 0..59, a minuty są nieograniczone. - Jeśli otrzymuję numer
hh:mm:ss
, zarówno sekundy, jak i minuty są ograniczone do 0..59, podczas gdy godziny są nieograniczone.
Następnie należy zwrócić obiekt TimeDelta.
Naiwnym sposobem jest napisanie wielu instrukcji if
, aby to sprawdzić. Ale ja szukam gładszej drodze.
val = "11:66:11"
try:
val = map(int, val.split(':'))
except ValueError:
return False
if len(val) == 1:
return val
if len(val) == 2:
if val[1] > 59:
print "Bad seconds"
return False
if len(val) == 3:
if val[2] > 59 or val[1] >59:
print "Bad seconds/minutes"
return False
while len(val) < 3:
split.insert(0,0)
return = timedelta(hours=split[0],minutes=split[1],seconds=split[2])
Masz błąd? Z jakim problemem stoisz? – Nilesh
Bez błędów, kod, który napisałem, jest natywnym sposobem robienia tego, co chcę. Proszę o bardziej płynny sposób. Bardziej pytonowo. – MichaelR