在我的程序中,第一行包含多个测试用例,其他行包含测试用例本身。 每个测试用例包含8个数字,每个时间戳4个:day1 hour1 min1 sec1 day2 hour2 min2 sec2(第二个时间戳将始终晚于第一个时间戳)。 答:对于每个测试用例,您要输出差异如下(天数小时分钟秒) - 请注意括号 - 用空格分隔。
这是我的代码:
ins = int(input())
new_list = []
for i in range(ins):
values = [int(x) for x in input().split()]
if values[3] > values[7]:
values[2] += 1
seconds = 60 - (values[3] - values[7])
else:
seconds = values[7] - values[3]
if values[2] > values[6]:
values[1] += 1
minutes = 60 - (values[2] - values[6])
else:
minutes = values[6] - values[2]
if values[1] > values[5]:
values[0] += 1
hours = 24 - (values[1] - values[5])
else:
hours = values[5] - values[1]
days = values[4] - values[0]
new_list.append('(')
new_list.append(days)
new_list.append(hours)
new_list.append(minutes)
new_list.append(seconds)
new_list.append(')')
print(' '.join(map(str,new_list)))
这是我的意见:
3
1 0 0 0 2 3 4 5
5 3 23 22 24 4 20 45
8 4 6 47 9 11 51 13
这是我的输出:
( 1 3 4 5 ) ( 19 0 57 23 ) ( 1 7 44 26 )
我的问题是如何删除括号之前和之后的空格,以便我的输出如下所示:
(1 3 4 5) (19 0 57 23) (1 7 44 26)
答案 0 :(得分:3)
也许不是最优雅的解决方案,但改变你的最后一行看起来像这样。
print(' '.join(map(str,new_list)).replace('( ', '(').replace(' )', ')'))
答案 1 :(得分:2)
在简单的情况下,即使使用str.join()
和map()
函数也可以简化它:
result = ""
for i in range(ins):
...
result += '(' + str(days) +" "+ str(hours) + " "+ str(minutes) +" "+ str(seconds) +") "
或者使用format()
函数:
result += '({} {} {} {}) '.format(days, hours, minutes, seconds)
输出:
(1 3 4 5) (19 0 57 23) (1 7 44 26)
答案 2 :(得分:0)
另一种使用全新formatted string literals(> = 3.6)的方法:
new_list.append(f'({days} {hours} {minutes} {seconds}) ')
取代这个:
new_list.append('(')
new_list.append(days)
new_list.append(hours)
new_list.append(minutes)
new_list.append(seconds)
new_list.append(')')