Есть ли функция для сокращения больших чисел в python? - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь написать простую игру в pygame (с Python 3.8), но она предполагает размещение довольно больших чисел в небольших местах (150x50 пикселей). Итак, я искал ответ на свою проблему, играя в другие игры в режиме ожидания. Я заметил, что в большинстве бездействующих игр после того, как число достигнет миллиона, счетчик показывает только первые 1, 2 или 3 цифры (в зависимости от того, сколько их стоит перед запятой). Например, число 32 532 345 будет показано как 32M, а число 123 423 643 426 будет 123B. Итак, это заставило меня спросить, есть ли функция Python, которая делает это? Как я могу написать функцию python, которая бы возвращала такое число, чтобы его длина составляла всего 4 цифры, но представляла собой гораздо большее количество? Как всегда, заранее спасибо.

1 Ответ

2 голосов
/ 12 апреля 2020

Все зависит от того, какое округление вы хотите установить, но простой и обобщенный c подход с использованием нарезки Python может быть следующим:

def shorten_number(number_to_shorten):
    str_number_to_shorten = str(number_to_shorten)
    if len(str_number_to_shorten) > 9 and len(str_number_to_shorten) <= 12:
        return str_number_to_shorten[:-9] + "B"
    elif len(str_number_to_shorten) >= 7 and len(str_number_to_shorten) <= 9:
        return str_number_to_shorten[:-6] + "M"

print(shorten_number(32532345))
print(shorten_number(123423643426))

Выход
32M
123B

Вы можете расширить и адаптировать его, добавив другие условия elif.

...