文字列として回文をとり、それを特定の視覚的表現で表示する再帰関数を書きたいと思っていました(写真参照)。誰も私はどのように印刷された行の先頭にスペースを含めることができますので、プリントアウト全体が "ミラー化"されているか教えてください。私のものは完全に歪んでいる。 私に手伝ってくれてありがとう!回帰関数を持つ回文の視覚的表現を印刷するにはどうすればよいですか?
これは私のプリントが
のように見え、これは私はそれが
ように見えるしたいのか。これは、プリントアウトから私のコードである方法です:
def print_palindrome(p):
if len(p) <= 1:
print(p)
else:
print(len(p)*" " + p[0] + len(p)*" " + p[-1])
return print_palindrome(p[1:-1])
print_palindrome("murder for a jar of red rum")
問題は、あなたが行の先頭にスペースが間違った番号を印刷するように、pはrecussive呼び出しに短くなるということです。
はここにあなたのコードに私の修正です。最初の 'len(p)*" "を'(40-len(p)/ 2)*に変更することができます。 "" '40は定数で、ページ幅の半分、文字列。 – Jasen
提案をありがとう!私はちょうどそれを試して、私に次のエラーメッセージが表示されます:TypeError: '浮動小数点型'の非intでシーケンスを掛けることができません...他のアイデア? – NiJo