1 Pregunta: Intentando ajustar, centrar y ajustar la salida del cronómetro.

pregunta creada en Wed, May 8, 2019 12:00 AM

Tengo un programa de cronómetro que es completamente funcional. Todo lo que estoy tratando de hacer es formatear la salida para que esté alineada.

Esta era una sección del código antes de intentar editar:

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

Este fue uno de los intentos de alinear la salida:

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

Recibo el error:

 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. El error es bastante legible. Y has publicado un código diferente del que has ejecutado.
    2019-05-08 16: 16: 50Z
1 Respuestas                              1                         

ljust y center son métodos de cadena. Debe convertir el valor en cadenas antes de llamar a esos métodos:

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

También puede usar str.format y las opciones de formato : /p>

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

Con str.format la conversión a una cadena es implícita.

    
1
2019-05-08 16: 15: 11Z
  1. ¡Oh, muchas gracias! Intenté convertirlo en una cadena, ¡pero mi problema fue literalmente un paren gracias!
    2019-05-08 16: 33: 32Z
fuente colocada aquí