Pegue uma entrada inteira com espaço e armazene o valor em python

Sep 21 2020

Estou tentando resolver o problema do ângulo do relógio e aí tive que fazer a entrada como a seguir:

Entrada

2
5 30
6 00

onde A primeira linha contém o número de casos de teste T. Cada caso de teste contém dois inteiros h e m que representam a hora no formato de hora e minuto.

Estou tentando obter informações como esta

size=int(input())

for i in range(size):
    h,m=list(map(int,input().split(' ')))

mas não consigo armazenar o valor para o cálculo do ângulo do relógio, pois ele está substituindo o valor anterior.

Respostas

Mohammadreza Sep 20 2020 at 22:57

Experimente isto:

size = int(input())
angle = []
clock = []

for i in range(size):
    Inp = input().split(' ')
    clock.append(Inp) # store input clock
    hour, minute = int(Inp[0]), int(Inp[1])
    ans = abs((hour * 30 + minute * 0.5) - (minute * 6))
    angle.append(min(360 - ans, ans)) # store angle

print(clock)
print(angle)

Hora de saída = 2, minuto = 2 e hora = 12, minuto = 2:

[[2, 2], [12, 2]]
[49.0, 11.0]
1 Mureinik Sep 20 2020 at 22:39

Você pode declarar uma lista para conter as entradas fora do loop e anexar a ela em cada iteração:

size=int(input())

clocks = []
for i in range(size):
    clocks.append(list(map(int,input().split(' '))))
Prune Sep 20 2020 at 22:42

Você praticamente respondeu você mesmo à pergunta: não sobrescreva a primeira entrada pela segunda até que tenha terminado.

size=int(input())

for i in range(size):
    h,m=list(map(int,input().split(' ')))
    # Do you calculation here.
    hour_pos = h + m/60
    angle = ...
    print(angle)