3 回答
TA贡献1966条经验 获得超4个赞
8:30不是有效的数据类型。将其转换为整数以使其正常工作(8:30 = 8小时30分钟= 8 * 60 + 30分钟)
>>> time = input("Enter the time the call starts in 24-hour notation:\n").split(":")
Enter the time the call starts in 24-hour notation:
12:30
>>> time
['12', '30'] # list of str
>>> time = [int(i) for i in time] # will raise an exception if str cannot be converted to int
>>> time
[12, 30] # list of int
>>> 60*time[0] + time[1] # time in minutes
750
>>>
要在几秒钟之内获得它,例如和12:30:58,请time_in_sec = time[0] * 3600 + time[1] * 60 + time[2]在最后一行进行相同的操作。
由于具有模数属性,可以保证只有一个“真实”时间对应于转换为整数的小时。
对于您的问题,创建一个to_integer(time_as_list)返回int的函数,然后将用户输入与to_integer('18:00'.split(':'))和进行比较。to_integer('8:30'.split(':'))
TA贡献1942条经验 获得超3个赞
手动处理时间并非易事。我建议您使用datetime支持时间转换,比较等的模块。
from datetime import datetime as dt
t = input("...")
t_object = dt.strptime(t, "%H:%M")
if t_object >= dt.strptime("8:30", "%H:%M") and \
t_object <= dt.strptime("18:00", "%H:%M"):
do_your_stuff()
TA贡献1735条经验 获得超5个赞
我对这个问题的看法(没有datetime):
answer = input("Enter the time the call starts in 24-hour notation:\n")
t = tuple(int(i) for i in answer.split(':'))
if (8, 30) <= t <= (18, 0):
print("YES")
添加回答
举报