Friendly Number Friendly Number
Elementary+
EN French RU

L'aspect des nombres longs peut être amélioré, alors écrivons un code pour le réaliser !

Il vous faut écrire une fonction pour convertir un nombre en chaîne de caractères, selon des règles expliquées ci-dessous.
Tout d'abord, il faudra écourter ce nombre selon une certaine base (argument base; valeur par défaut : 1000).
La valeur est un nombre "float", avec des décimales après le point (argument decimals; valeur par défaut : 0).
Pour la valeur, utiliser la troncature si decimals = 0 (5.6 ==> 5, -5.6 ==> -5) ; sinon, procéder à un arrondi standard.
Si le nombre de décimales est supérieur au nombre de chiffres après le point, compléter par des 0 à la fin.
Le nombre sera exprimé avec une lettre désignant la puissance ("power") accolée à la valeur. Une liste des désignations pour le "power" sera fournie (argument powers; valeur par défaut : ['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']).
S'il n'y a pas suffisamment de "power", utilisez le maximum.
Si l'on vous donne une unité, un suffixe (argument suffix; valeur par défaut ‘’), il faut l'ajouter à la fin.
Pour finir, zero est toujours zero, sans "power", mais avec un suffixe.

Etudions quelques exemples, pour éclaircir le descriptif :

  • n=102
    result: "102", la base prend la valeur par défaut 1000 et 102 est plus petit que cette base.
  • n=10240
    result: "10k", la base prend la valeur par défaut 1000, et arrondi inférieur.
  • n=12341234, decimals=1
    result: "12.3M", un chiffre après la virgule.
  • n=12000000, decimals=3
    result: "12.000M", zéros de queue pour compléter.
  • n=12461, decimals=1
    result: "12.5k", arrondi standard.
  • n=1024000000, base=1024, suffix='iB'
    result: '976MiB', base spécifique et suffixe.
  • n=-150, base=100, powers=['', 'd', 'D']
    result: '-1d', valeur négative et troncature.
  • n=-155, base=100, decimals=1, powers=['', 'd', 'D']
    result: '-1.6d', valeur négative et arrondi standard.
  • n=255000000000, powers=['', 'k', 'M']
    result: '255000M', il n'y a pas assez de "powers".

Input: Un nombre, comme entier.
L'argument "base" comme entier, valeur par défaut 1000.
L'argument "decimals" comme entier, valeur par défaut 0.
L'argument "powers" comme liste de chaîne de caractères, valeur par défaut ['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'].

Output: Le nombre converti, comme chaîne de caractères.

Exemple:

friendly_number(102) == '102'
friendly_number(10240) == '10k'
friendly_number(12341234, decimals=1) == '12.3M'
friendly_number(12000000, decimals=3) == '12.000M'
friendly_number(12461, decimals=1) == '12.5k'
friendly_number(1024000000,...
You should be an authorized user in order to see the full description and start solving this mission.