2016-09-11 5 views
0

私は気温を華氏に変換する列スタイルを実現しようとしています。列が並んでいません

私の質問:私はそれを実行すると、数字はうまく整列しています。しかし、cとfは左に揃えられ、数字の上にはありません。どうしてこれなの?ここで

は私のコードです:

def convert(celc): 
    fahr = celc * 1.8 + 32 
    return fahr 

def table(): 
    format_str = '{0:10} {1:10}' 
    c = 'c' 
    f = 'f' 
    cfhead = format_str.format(c, f) 
    print(cfhead) 
    for graden in range(-40,30,10): 
     result = format_str.format(convert(graden), graden) 
     print(result) 

table() 
常に右に揃えるためにあなたの形式で
+0

フロートと整数のような数字であり、 –

+0

@KalpeshDusane:どうして明示的なアライメントを設定しないのですか?書式文字列では、プレースホルダの名前/数値の後に '!s'を追加すると、値は' str'で変換されます。 –

+0

@ Martijn Pietersありがとう、私はアライメント方法について知らなかったし、それを文字列に変換しようとすると動作しますが、私は何か新しいことを学ぶので、ありがとう –

答えて

0

使用>

format_str = '{0:>10} {1:>10}' 

デフォルトでは文字列は左揃えされるため、数字が右になることです - 整列。 Format Specification Mini-Language documentationから

'<'
は左揃えされるように利用可能なスペースの中に(これはほとんどのオブジェクトのデフォルトです)フィールドを強制します。

'>'
(これは数字のデフォルトです)、右詰め利用可能なスペース内にあるように、フィールドを強制します。

ご希望の出力を得る明示的なアライメントフォーマッタに

:あなたは `結果を=行う場合は 'C'と` F`は、文字などしているので、私が思う

>>> table() 
     c   f 
    -40.0  -40 
    -22.0  -30 
     -4.0  -20 
     14.0  -10 
     32.0   0 
     50.0   10 
     68.0   20 
関連する問題