我正在尝试打印一个列表中最接近的值,该列表提供用户输入。实际上,用户给我一个时间,我想检查这个值是否在时间表的列表中,否则我想增加分钟数,直到我解救列表的一个值,然后在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只在变量minutes等于'56'而不是列表中的'41'时打印它。。。。你知道吗
这是完整的版本,代码分为两个函数。代码是在@zord的帮助下完成的:
我觉得你有点太复杂了。这种逐项增加是不必要的。以下是我在你的字典中查找最近时间的代码:
在这里你可以看到它在工作:fiddle。你知道吗
编辑:我将代码修改为python3。(还有小提琴。)
Edit2:我还做了一个版本,在接下来的半小时里,每次都会列出。Fiddle。你知道吗
相关问题 更多 >
编程相关推荐