2017-10-03 11 views
-2

私はこれが何度も尋ねられたことを知っています。しかし、私が使用しているコードを使って動作させることができた他の誰かを見つけることができませんでした。この問題にはいくつかの解決策があります - 私は認識しています。しかし、なぜ鉱山が動作しないのか知りたいです。私は顔の中で私を見つめている何かを見逃していると確信していますが、私が今ある問題は、ボックスがテキストの周りにマージしないということです。代わりに、すべてが1行に印刷されます。私は、スクリーンショットを添付しました:ここhttps://imgur.com/a/2KviRテキストの周りのボックスに問題があります

は私のコードです:

def Boxmaker():              # Creating a function 
    text = 'Arlidio'            # Defining Variable Text 
    borders = text.splitlines()          # Spliting up 'Arlidio' into seperate lines 
    boxwid = max(len(s) for s in borders)       # Calculates length of longest word in 'borders' 
    boxitems = ['|' + '¯' * boxwid + '|']       # For the length of longest word creates box top border 
    boxitems.append('|' + '_' * boxwid + '|')      # Adds bottom border to existing variable 'boxitems' 
    print(text.join(boxitems))          # Prints fused text 

とランタイム結果:あなたはnew lineを使用する必要がある、または自動的にすべてが上に印刷されます

|¯¯¯¯¯¯¯|Arlidio|_______| 
+6

コードが改行を一切使用していないので、すべてが1行になっていることは間違いありません。 – Kevin

+1

それは簡単になりますが、最終的には^) – Kevin

答えて

1

同じ行、ちょうどあなたにアイデアを与える:

text = ' Arlidio' 
borders = text.splitlines() 
boxwid = max(len(s) for s in borders) 
boxitems = ['|' + '¯' * boxwid + '|'+ '\n'] 
boxitems.append('\n|' + '_' * boxwid + '|') 
print(text.join(boxitems) 
2

Y ou've基本的にここに3つの文字列を持って、彼らは以下のとおりです。それはあなたが何をしたいかのように聞こえる

"|¯¯¯¯¯¯¯|" # top border 
"Arlidio" # text 
"|_______|" # bottom border 

改行がそれぞれ1を分離しているために、これらを組み合わせることです。

"\n".join([topborder, text, bottomborder]) 

は、例えば、引数の区切りとしてそのstr.join扱いオブジェクトを覚えている:それはようなものになるだろう",".join(["Hello", " World!"]) == "Hello, World!"。したがって、あなたのコードは、上枠と下枠をテキスト"Arlidio"で区切っていますが、どこにも改行を入れません。

+0

ありがとうございます。私は基本的にこの解決策にも達しました。あなたのものはとてもきれいにまとめられていますが。あなたが私のために動脈瘤に罹ったら、すみません。ありがとう、それを非常に感謝します。 –

関連する問題