Как использовать функцию округления и функцию абсолютного значения вместе в одной строке? - PullRequest
1 голос
/ 07 марта 2020

Я пытаюсь создать программу понг в python, и я хочу, чтобы программа показывала скорость мяча. Однако, несмотря на то, что это работает, показанная скорость мяча слишком велика c для того, что я хочу. Он показывает скорость мяча до очень определенной c суммы.

Вот мой код в тексте:

pen2.write("Ball Speed: {}".format(abs(ball.dx)), align="center", font=("Courier", 24, "normal"))

"pen2" это мой pen, а ball.dx - скорость мяча на пути x (такая же, как у y-speed). У меня уже есть функция абсолютного значения, чтобы сделать ее положительной (потому что когда мяч ударяется о стены / весла, он умножает скорость на отрицательную 1), но я не могу понять, как поместить функцию вокруг с функцией абсолютного значения, чтобы сделать ее упростите текст.

Вот как выглядит моя игра прямо сейчас со скоростью мяча, показанной внизу.

enter image description here

Ответы [ 2 ]

1 голос
/ 07 марта 2020

Редактировать: я неправильно понял ваш вопрос. Функция round() принимает второй аргумент, определяющий количество десятичных знаков, поэтому просто используйте что-то вроде:

pen2.write("Ball Speed: {}".format(round(abs(ball.dx), 3)), align="center", font=("Courier", 24, "normal"))

Старый ответ: Похоже, вам просто нужно использовать более указать строку формата c, например, если вы хотите показать ее с 3 десятичными разрядами:

pen2.write("Ball Speed: {:.3f}".format(abs(ball.dx)), align="center", font=("Courier", 24, "normal"))

Для получения дополнительной информации вы можете ознакомиться с руководством здесь . Суть в том, что : сообщает интерпретатору python, что вы указываете формат, а .3f говорит, что вы хотите отформатировать число с плавающей запятой с 3 десятичными знаками.

1 голос
/ 07 марта 2020

Вы могли бы просто сделать round(abs(ball.dx). Вот ваш окончательный код:

pen2.write("Ball Speed: {}".format(round(abs(ball.dx))), align="center", font=("Courier", 24, "normal"))
...