我在排序和输出方面遇到了一个问题。我不知道该怎么做。
该方案的主要思想:
- 输入乘客总数。
- 输入细胞总数。
- 输入乘客数据 n 次(基于第一次输入) - 例如:Qwe 11:25 12:34。
- 输出排序后的数据。输出应该是这样的:乘客姓名,手机号码。
n = int(input())
k = int(input())
data = []
for x in range(1,n+1):
data.append(input().replace(":"," ").split(" "))
for elem in data:
elem.append(int(elem[1])*60+int(elem[2]))
elem.append(int(elem[3])*60+int(elem[4]))
while len(elem)>3:
elem.pop(1)
if elem[1]>elem[2]:
raise SystemExit("time of issuing can not be lower than time putting")
程序的示例输入:
4
2
Qwe 12:45 16:30
Wer 13:55 17:50
Ert 6:25 12:55
Rew 22:55 23:30
输出:
Ert 1
Qwe 2
Wer 2
Rew 1
由于单元格限制,“Wer”也可以跳过(这是一个开始练习,所以这并不意味着您需要一个涵盖所有内容的优秀代码)。我可以尝试解释单元格是如何工作的,但我认为从示例输出中可以很清楚地看到它 - 它基于发布时间和放置时间的比较。
我正在尝试学习 Python,如果有人能回答我应该怎么做来完成我的脚本,或者更确切地说使用另一个想法,我将不胜感激。
更新: 我得到了这样的东西:
data = sorted(data, key=lambda elem: elem[1])
for elem in data: #Just visual check
print(elem)
for x in data:
if j<=k:
if data[i][2]>data[i+1][1]:
print(data[i][0], j+1)
j+=1
i+=1
else:
j=0
print(data[i][0], j+1)
else:
j=0
但这仍然不是我想要的。有任何想法吗?