Padder un nombre ...
hello Thibault,
lorsque tu auras un moment pourrais-tu m'expliquer assez clairement ce que veut dire padder un nombre
Ton exemple dans la rubrique "formatage des chaînes de charactères me laisse plus que dubitatif.
pour être clair : "j'ai rien compris"
d'avance merci de ta réponse
bien à toi
fred
Lorsque tu affiches des nombres de grandeurs très différence, tu peux avoir un alignement qui n'est pas optimal:
1: le chiffre un
10: le nombre dix
100: le nombre cent
1000: le nombre mille
Les phrase ici ne sont pas alignées. Dans ce cas, on peut vouloir aligner les : en remplissant l'espace à gauche du nombre par un caractère de remplissage comme le chiffre 0:
0001: le chiffre un
0010: le nombre dix
0100: le nombre cent
1000: le nombre mille
ou des espaces:
1: le chiffre un
10: le nombre dix
100: le nombre cent
1000: le nombre mille
En ajoutant ces caractère dit de "padding" à gauche du nombre, cela permet éventuellement d'aligner les phrases. C'est uniquement une contrainte liée au formatage.
Hello, le padding peut être important lorsque tu as besoin de garder une longueur constante pour une chaine de caractère qui contient un nombre. C'est pour du formatage comme l'a dit Thierry mais aussi pour être sûr que quand tu appliques un traitement à ta chaine de caractère, le traitement restera le même quelque soit le nombre. Je m'explique avec l'exemple suivant:
Imagines effectuer des simulations numériques pour différents cas. Pour chaque cas de simulation tu sors un fichier de résultat avec le numéro de simulation en titre de fichier. Il se peut par exemple que certaines simulations n'ont pas tourné et donc tu n'as que quelques fichiers résultats.
Tu vas te retrouver avec un dossier avec ces fichiers:
resultats_cas2.txt
resultats_cas49.txt
resultats_cas6.txt
resultats_cas29.txt
resultats_cas1.txt
resultats_cas32.txt
resultats_cas3.txt
resultats_cas31.txt
resultats_cas30.txt
Imagines maintenant que tu veuilles parcourir ton dossier le lendemain pour savoir quels cas de simulations ont tourné. Suivant un cas il faut prendre le 6e terme en partant de la fin de la chaîne et parfois le 6e ET le 5e. La chaine de caractère n'est pas constante car parfois le numéro de simulation a 1 digit, parfois 2.
Si lors de l'écriture des fichiers résultats on avait fait attention au padding, nous n'aurions pas eu ce problème. Voilà comment procéder:
Si tu sais que tu n'as pas plus de 100 simulations, donc de 0 à 99, tu sais que tu n'auras besoin que de 2 digit par numéro de simulation pour avoir une chaine de caractère de longueur constante pour toutes. Pour ça tu peux utiliser my_string.zfill()
Voici comment procéder:
for i in [2, 49, 6, 29, 1, 32, 3, 31, 30]:
open(f"resultats_cas{str(i).zfill(2)}.txt", "w") # ecriture des fichiers résultats de simulation
tu obtiens les fichiers suivants:
resultats_cas49.txt
resultats_cas01.txt
resultats_cas29.txt
resultats_cas02.txt
resultats_cas03.txt
resultats_cas06.txt
resultats_cas32.txt
resultats_cas31.txt
resultats_cas30.txt
Ainsi quelque soit le fichier que tu prends, si tu lui appliques la fonction:
def extract_case(simulation_name):
return simulation_name[-6:-4]
Tu auras toujours le même format de réponse:
extract_case("resultats_cas31.txt")
# 31
Bonus: extraire tous les load case
for elem in os.listdir():
print(extract_case(elem))
# 49
# 01
# 29
# 02
# 03
# 06
# 32
# 31
# 30
La réponse est un peu longue mais c'est pour essayer de donner un peu de contexte et comprendre pourquoi on peut avoir besoin du padding. Retiens my_string.zfill(n)
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte