Je veux que ma sortie soit sur une seule ligne, c'est pourquoi j'utilisais end = ' ' mais comme c'est dans une boucle, cela ajoute également de l'espace après la dernière valeur que je ne veux pas. J'ai essayé d'utiliser strip() mais cela supprime tous les espaces. Alors, comment puis-je supprimer le dernier espace de ma sortie dans cette boucle ?

import math

f0 = int(input())
r = math.pow (2, 1/12)
for i in range(5):
    f1 = f0 * (r ** i )
    print('{:.2f}'.format(f1), end= ' ')

Sortie attendue : si 440 est une entrée 440.00 466.16 493.88 523.25 554.37

Ma sortie :440.00 466.16 493.88 523.25 554.37

1
सृजन सृजन 22 sept. 2021 à 00:58

2 réponses

Meilleure réponse

Pensez à remplacer votre boucle for par une expression génératrice avec str.join comme ceci :

print(' '.join((f'{f0*r**i:.2f}' for i in range(5))))

Sortie : 440.00 466.16 493.88 523.25 554.37

Cette approche vous évite d'avoir un comportement différent sur le dernier itérateur de la boucle, ou de modifier la chaîne par la suite.

str.join insère la chaîne (' ' dans ce cas) entre chaque élément de l'itérable, mais pas au début ou à la fin.

4
Will Da Silva 21 sept. 2021 à 22:09

Vous pouvez ajouter une instruction if-else et l'appliquer à la dernière itération de la boucle.

import math

f0 = int(input())
r = math.pow(2, 1/12)
for i in range(5):
    f1 = f0 * (r ** i )
    if i == 5:
        print('{:.2f}'.format(f1))
    else:
        print('{:.2f}'.format(f1), end= ' ')
1
Will Da Silva 21 sept. 2021 à 23:00