设:
0:00-9:00 为区间0
9:00-17:00为区间1
17:00-22:00为区间2
22:00-24:00为区间3
比如:
给一个时间段为18:12-8:34
求得这个时间段按顺序写在[2,3,0]
给一个时间段为14:44-23:11
求得这个时间段按顺序写在[1,2,3]
给一个时间段为18:33-21:59
求得这个时间段按顺序写在[2]
给任何一个时间段都能给出这个列表要怎么编写啊
ret_list = []
start = input('开始时间:')
end = input('结束时间:')
start_hour = int(start.split(':')[0])
end_hour = int(end.split(':')[0])
if 0 < start_hour < 9:
ret_list.append(0)
elif 9 < start_hour < 17:
ret_list.append(1)
elif 17 < start_hour < 22:
ret_list.append(2)
else:
ret_list.append(3)
if 0 < end_hour < 9:
ret_list.append(0)
elif 9 < end_hour < 17:
ret_list.append(1)
elif 17 < end_hour < 22:
ret_list.append(2)
else:
ret_list.append(3)
if ret_list[1] > ret_list[0]:
ret = [num for num in range(ret_list[0], ret_list[1]+1)]
else:
ret_list[1] = ret_list[1] + 4
ret = [num if num <= 3 else num - 4 for num in range(ret_list[0], ret_list[1]+1)]
print(ret)
1.先把字符串拆开,分别得到开始小时,开始分钟,结束小时,结束分钟
2.判断开始时间到底在哪个段,结束时间到底在哪个段
3.补齐开始和结束之间的段,如果开始和结束在一个段里,并且开始大于结束,也补齐,否则不补齐
一个简单实现,供参考:
def inOneZone(firstTime,secondHour):
if firstTime>=0 and firstTime<9 and secondHour>=0 and secondHour<9:
#print("inOneZone,return 1,firstHour=",firstHour,"secondHour=",secondHour)
return 1
elif firstTime>=9 and firstTime<17 and secondHour>=9 and secondHour<17:
#print("inOneZone,return 1,firstHour=",firstHour,"secondHour=",secondHour)
return 1
elif firstTime>=17 and firstTime<22 and secondHour>=17 and secondHour<22:
#print("inOneZone,return 1,firstHour=",firstHour,"secondHour=",secondHour)
return 1
elif firstTime>=22 and firstTime<24 and secondHour>=22 and secondHour<24:
#print("inOneZone,return 1,firstHour=",firstHour,"secondHour=",secondHour)
return 1
else:
#print("inOneZone,return 0,firstHour=",firstHour,"secondHour=",secondHour)
return 0
times = input("请输入一个时间段:")
tlist = times.split("-")
firstTime = tlist[0].split(":")
firstHour = int(firstTime[0])
firstMinute = int(firstTime[1])
#print("firstHour=",firstHour,"firstMinute=",firstMinute,"tlist[0]=",tlist[0])
secondTime = tlist[1].split(":")
secondHour = int(secondTime[0])
secondMinute = int(secondTime[1])
#print("secondHour=",secondHour,"secondMinute=",secondMinute,"tlist[1]=",tlist[1])
result = []
while True:
#print("in while")
if firstHour >= 0 and (firstHour <9 and firstMinute<=59) :
if inOneZone(firstHour, secondHour) ==1 :
result.append(0)
break
#print(0)
result.append(0)
firstHour=9
firstMinute=0
#print("firstHour=",firstHour,"firstMinute=",firstMinute,"tlist[0]=",tlist[0])
elif firstHour >= 9 and (firstHour <17 and firstMinute<=59) :
if inOneZone(firstHour, secondHour) ==1 :
result.append(1)
break
#print(1)
result.append(1)
firstHour=17
firstMinute=0
#print("firstHour=",firstHour,"firstMinute=",firstMinute,"tlist[0]=",tlist[0])
elif firstHour >= 17 and (firstHour <22 and firstMinute<=59):
if inOneZone(firstHour, secondHour) ==1 :
result.append(2)
break
#print(2)
result.append(2)
firstHour=22
firstMinute=0
#print("firstHour=",firstHour,"firstMinute=",firstMinute,"tlist[0]=",tlist[0])
elif firstHour >= 22 and (firstHour <24 and firstMinute<=59):
if inOneZone(firstHour, secondHour) ==1 :
result.append(3)
break
#print(3)
result.append(3)
firstHour=0
firstMinute=0
#print("firstHour=",firstHour,"firstMinute=",firstMinute,"tlist[0]=",tlist[0])
print(result)