【发布时间】:2015-04-30 07:11:10
【问题描述】:
我有休闲问题,
我应该以10:10:10 (hh:mm:ss) 或10:10(mm:ss) 或10(ss) 的形式获取用户输入。现在我需要检查休闲参数:
- 如果我只有几秒钟,那么没有限制。
- 如果我收到
mm:ss,则秒数限制为 0..59,分钟数无限制。 - 如果我收到
hh:mm:ss,则秒数和分钟数都限制为 0..59,而小时数则不受限制。
然后返回一个 TimeDelta 对象。
天真的方法是编写乘法if 语句来检查所有这些。
但我正在寻找更顺畅的方式。
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])
【问题讨论】:
-
你有什么错误吗?你面临什么问题?
-
没有错误,我写的代码是做我想做的事情的本机方式。我要求更顺畅的方式。一种更 Pythonic 的方式。
标签: python python-2.7 date