O código dada como solução ao exercício não esta conforme a saída apresentada no enunciado, é um detalhe apenas mas o código apresentado não conta o tempo decorrido desde o inicio do programação. Ao menos, essa foi minha interpretação do que o código deveria fazer ao analisar a saida apresentada.
Desta forma, resolvi a questão assim, gostaria de saber se esta correto:
inicio = time.time()
async def temperatura():
while True:
await asy.sleep(2)
duração = time.time() - inicio
temp = random.choice((15,20,25,30,35))
print(f"[{duração:.0f}s] Temperatura {temp}ºc")
async def umidade():
while True:
await asy.sleep(3)
duração = time.time() - inicio
umi = random.choice((10,20,25,30,35))
print(f"[{duração:.0f}s] Umidade {umi}%")
async def qualidade():
while True:
await asy.sleep(5)
duração = time.time() - inicio
quali = random.choice(('Boa','Regular',"Ruim"))
print(f"[{duração:.0f}s] Qualidade do ar: {quali}")
async def main ():
tarefas = (asy.create_task(temperatura()),asy.create_task(umidade()),asy.create_task(qualidade()))
await asy.gather(*tarefas)
asy.run(main())