2017-10-04 1 views
0

Je suis en train de générer une forme simple de triangle avec des chiffres, où la sortie pourrait ressembler à ceci:Python 3 Nesting format chaîne

1 
22 
333 

Cependant, je ne peux pas obtenir ce à travailler avec une chaîne imbriquée format, le mieux que je peux obtenir est la suivante ...

 for i in range(1, size+1):  
      line = f'{i}' *i 
      print(f"{line:>{size}}") 

Idéalement, je voudrais avoir « ligne » imbriquée dans la méthode d'impression. Aucune suggestion?

+0

Je ne comprends pas ce que vous demandez. Que voulez-vous dire par "ligne" imbriqué dans la méthode d'impression "? – OldGeeksGuide

Répondre

1

Votre chaîne de format "imbriquée" doit être formatée deux fois. Toutes les accolades que vous souhaitez conserver pour la deuxième fois doivent être échappées dans la première, ainsi { devient {{ et } devient }}. En outre, puisque vous ne pouvez pas utiliser le préfixe f deux fois, vous pouvez appeler explicitement format pour le deuxième formatage.

Qu'est-ce que vous cherchez est ceci:

for i in range(1, size + 1): 
    line = f"{i}" * i 
    print(f"{{0:>{size}}}".format(line)) 

Alors d'abord la mise en forme de chaîne se f"{{0:>{size}}}" en {0:>3}, donc en arrivant à l'appel explicite de format vous obtenez essentiellement print("{0:>3}".format(line)).

+0

merci, @Hetzroni :) –