1

2 つの string があり、その長さは入力によって異なります。それらを中央に揃えてフォーマットし、残りのスペースを で埋めたいと思います ' '。で始まり、 で終わる各文字列^^

ケース1:

String1 = Longer String
String2 = Short

必要な出力:

^^   Longer String   ^^
^^       Short       ^^

ケース 2:

String1 = Equal String1
String2 = Equal String2

必要な出力:

^^       Equal 1      ^^
^^       Equal 2      ^^

ケース 3:

String1 =  Short
String2 = Longer String

必要な出力:

^^       Short       ^^
^^   Longer String   ^^

3 つの出力すべてでレグスが一定に保たれているため、均一性が維持されます。

私の最初の考えは、これには次の形式で2つの文字列の長さをチェックすることが含まれるということです

if len(String1) > len(String2):
  #Do something
else:
  #Do something else
4

3 に答える 3

2

単に使用しますstr.center

assert '^^' + 'Longer String'.center(19) + '^^' == '^^   Longer String   ^^'
assert '^^' + 'Short'.center(19) + '^^'         == '^^       Short       ^^'
于 2013-07-05T00:28:39.067 に答える
0

2 つの文字列に対してセンタリングを設定するだけで参照したい場合:

cases=[
    ('Longer String','Short'),
    ('Equal 1','Equal 2'),
    ('Short','Longer String'),
    ]

for s1,s2 in cases:
    w=len(max([s1,s2],key=len))+6
    print '^^{:^{w}}^^'.format(s1,w=w)
    print '^^{:^{w}}^^'.format(s2,w=w)
    print

版画:

^^   Longer String   ^^
^^       Short       ^^

^^   Equal 1   ^^
^^   Equal 2   ^^

^^       Short       ^^
^^   Longer String   ^^

または、さらに多くの文字列の幅をテストしたい場合は、次のようにします。

cases=[
    ('Longer String','Short'),
    ('Equal 1','Equal 2'),
    ('Short','Longer String'),
]

w=max(len(s) for t in cases for s in t)+6
for s1,s2 in cases:
    print '^^{:^{w}}^^'.format(s1,w=w)
    print '^^{:^{w}}^^'.format(s2,w=w)
    print 

プリント:

^^   Longer String   ^^
^^       Short       ^^

^^      Equal 1      ^^
^^      Equal 2      ^^

^^       Short       ^^
^^   Longer String   ^^
于 2013-07-05T00:26:21.880 に答える