2017-01-01 2 views
0

В моей программе первая строка содержит количество тестовых примеров, другие строки содержат сами тестовые файлы. Каждый тестовый случай содержит 8 номеров, 4 для каждой отметки времени: day1 hour1 min1 sec1 day2 hour2 min2 sec2 (вторая временная метка всегда будет позже первой). Ответ: для каждого тестового случая вы должны вывести разницу, как указано ниже (дни в минутах минут) - обратите внимание на скобки - разделенные пробелами.Как удалить пробелы после того, как символы встречаются в Python

Это мой код:

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) 

ответ

3

Возможно, это не самое изящное решение, но измените окончательную строку, чтобы выглядеть так.

print(' '.join(map(str,new_list)).replace('(', '(').replace(')', ')')) 
+0

кто сказал, ваше решение не elegant.your решение только что сделал мой день :) ... Большое спасибо – Protul

+1

Спасибо, немного тупо! – Zak

+0

Кроме того, рассмотрите ли вы мой ответ, если я решит вашу проблему? – Zak

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) 
+0

Хорошая идея! Вероятно, было бы лучше использовать «формат» Python. – Zak

+0

@ Zak, добавлено 'format()' alternative – RomanPerekhrest

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(')')