0

プログラミングの課題があり、困っています。私は 99% 完了しましたが、私をつまずかせているのはささいなことです。これが私のコードです:

a = 0
b = 0
c = 0

for h in first:
    a = LetterMap[h]

    print(a,end="")         

for h in middle:
    b = LetterMap[h]
    print(b,end="")

for c in last:
    c = letterMap[c]
    print(c,end="")

このブロックとこのブロックの前の出力は次のとおりです。

first middle last

xxxxxxxxxxxxxxx

私はそれがこれであることを望みます:

first middle last

xxxxx xxxxxx xxxx
4

2 に答える 2

0

文字を 1 つずつ出力するのではなくstr.join、ジェネレーター式を使用して、翻訳されたシーケンスを文字列に結合することをお勧めします。

first_str = "".join(LetterMap[c] for c in first)
middle_str = "".join(LetterMap[c] for c in middle)
last_str = "".join(LetterMap[c] for c in last)

print次に、1 回の呼び出しでそれらを印刷できます。

print(first_str, middle_str, last_str) # default separator is a space!

値をスペースで区切るだけでなく、出力のより洗練された書式設定が必要な場合は、str.formatメソッドを使用して、必要な種類の書式設定を行うことができます。

print('{2:<20}{1:_^20}{0!r:*>20}'.format(first_str, middle_str, last_str)

これにより、文字列が「逆」の順序で出力されます。「最後の」値は幅 20 の列に左寄せされ、中央の値は幅 20 の列の中央に配置され、両側にアンダースコアがパディングされます。アスタリスクでパディングされた最後の 20 幅の列の右側にある「最初の」値 (必要に応じて引用符とバックスラッシュのエスケープを使用)。

たとえば、3 つの文字列が'foo''bar'および'baz'の場合、次のようになります。

baz                 ________bar_________***************'foo'

ドキュメントで文字列フォーマットのミニ言語について読むことができます。

于 2013-10-12T00:52:32.897 に答える