我正在尝试打印提供用户输入的列表的最接近值。在实践中,用户给了我一个时间,我想检查一下此值是否在时间表的列表中,否则我想增加分钟数,直到我获得列表的值,然后在30时隙中打印时间分钟。这是我的代码。您能帮我显示什么无效吗?谢谢
def print_specific_time():
f = open("Bus 6 Lugano Stazione.txt")
lines = f.readlines()
d = defaultdict(list)
start = lines.index("Monday\n")
stop = lines.index("Saturday\n")
time = "07.35"
hour = time[0] + time[1]
minutes = time[3:]
for line in lines[start:stop]:
line = line.strip(",")
line = line.replace("\n","")
line = line.replace(" ","")
line = line.split("|")
key = line[0]
if len(line) == 2:
d[key] += [line[1]]
if minutes not in d[hour]:
minutes = int(minutes) + 1
minutes = str(minutes)
print(minutes)
if minutes in d[hour]:
print(minutes)
print(hour,d[hour])
else:
if minutes == '59':
hour = int(hour)
hour = hour + 1
hour = "0" + str(hour)
minutes = "00"
d = dict(d)
for key in d.keys():
if key == hour:
print(key,d[key])
在文件中,我有一个时间表列表,所有时间表都放在字典中。这是我正在处理的输出:
{'06': ['11', '26', '41', '56'], '12': ['06', '36'], '11': ['06', '36'],
'07': ['11', '26', '41', '56'], '16': ['11', '26', '41', '56'], '14': ['06', '36'],
'17': ['11', '26', '41', '56'], '20': ['05', '35'], '15': ['06', '36', '56'],
'09': ['06', '36'], '21': ['05', '35'], '22': ['05', '35'], '23': ['05', '35'],
'19': ['11', '40'], '08': ['11', '26', '41'], '13': ['06', '36'], '10': ['06', '36'],
'18': ['11', '26', '41', '56']}
我会更好地解释。例如,如果用户将时间设置为07.35,则我的程序应打印07.41、07.56,而不打印其他任何内容(因为在30分钟的时间段中7.56之后没有时间)。你能帮我检查出什么问题吗?谢谢
编辑确定。现在我可以打印07点的时间段了(部分正确),但是我不明白为什么python仅在可变分钟数等于'56'而不是'41'时才打印它在列表中。
我认为您有点复杂了。不需要逐个增加。这是我的代码,用于查找词典中最接近的时间:
def find(time):
start_hour, start_minute = map(int, time.split('.'))
for h in range(start_hour, 24):
hour = "{0:02d}".format(h)
if hour in data.keys():
line = data[hour]
if h == start_hour:
line = list(filter(lambda m: int(m) >= start_minute, line))
if len(line) > 0:
return '%s.%s' % (hour, line[0])
编辑:我将代码修改为python3。(还有小提琴。)
Edit2:我还制作了一个版本,该版本列出了下一个半小时的所有时间。小提琴。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句