1 Questão: Tentando compensar, centralizar e ajustar a saída do cronômetro

pergunta criada em Wed, May 8, 2019 12:00 AM

Eu tenho um programa de cronômetro totalmente funcional. Tudo o que estou tentando fazer é formatar a saída a ser alinhada.

Esta foi uma seção do código antes de tentar editar:

 lapTime = round(time.time() - lastTime, 2)
 totalTime = round(time.time() - startTime, 2)
 print ('Lap #%s: %s (%s)' % (lapNum, totalTime, lapTime), end='')

Esta foi uma das tentativas de alinhar a saída:

 print ('Lap ', lapNum.ljust(10, ' ')), ':',totalTime.center(20, ' '), 
 lapTime.rjust(30, ' '))

Estou recebendo o erro:

 File "D:/stopwatch2.py", line 19, in main
     print ('Lap ' + str(lapNum.ljust(10, ' ')), ':',totalTime.center(40, 
 ' '), lapTime.rjust(50, ' '))
 AttributeError: 'int' object has no attribute 'ljust'
    
- 1
  1. O erro é bastante legível. E você postou um código diferente do que você executou.
    2019-05-08 16: 16: 50Z
1 Respostas                              1                         

ljust e center são métodos de string. Você precisa converter o valor em strings antes de chamar esses métodos:

print ('Lap ', str(lapNum).ljust(10, ' '), ':', str(totalTime).center(20, ' '))

Você também pode usar as opções de formato str.format e :

print ('Lap {:<10}: {:=20}'.format(lapNum, totalTime))
# output: Lap 1         :           1557332386

Com str.format, a conversão para uma string é implícita.

    
1
2019-05-08 16: 15: 11Z
  1. Ai cara, muito obrigado! Eu tentei convertê-lo para uma string, mas o meu problema foi literalmente apenas um paren obrigado!
    2019-05-08 16: 33: 32Z
fonte colocada Aqui