2017-11-26 118 views
-2

私はのピラミッドをに再割り当てせずに作ろうとしています。Python:数値でピラミッドを作る

私は(下記参照)のシンボルでこれを行うことができました:

def print_pyramid_step_3(heightNum): 
    ctr = 1 
    while(ctr <= heightNum): 
     row_spaces = " " * (heightNum - ctr) 
     row = (2*ctr-1) * "$" 
     print(row_spaces + row) 
     ctr = ctr +1 

# Get the input to get the height of the pyramid 
heightNum = int(input("Enter the height of the pyramid: ")) 
print("----"*50) 
print("Printing the pyramid by adding spaces to the row") 
print("----"*50) 
print_pyramid_step_3(heightNum) 

出力:

$ 
    $$$ 
    $$$$$ 
$$$$$$$ 
$$$$$$$$$ 

所望の出力Imがピラミッドでたときに、ユーザーがタイプのようなルックスを取得しよう高さ5、開始数1です。

希望出力:

1 
    234 
    56789 
10111213141516 
171819202122232425 
+0

すべての数が文字の同じ番号を使用する必要があります - すなわち、 '「10」'と '」5" '使うべき2つの文字 - 短い数字にスペースを使用する必要があります。あなたがピラミッドで100を持つ場合、すべての数字は3つの文字を使用する必要があります - つまり。 「5」、「10」、「100」、 – furas

+1

「再割り当てしない」とはどういう意味ですか? – viraptor

+0

あなたは描画する必要がある行の数を知っていますので、whileループではなくforループを作成してから、各行に対して出力する必要がある最初のスペースの数(height-rownum-1)行インデックス0から開始します)。次に1桁の数字を印刷し、次の桁の印刷は3桁、次の桁の5桁を印刷するなど、各行に印刷された番号に2を追加するだけです。 –

答えて

0

はこれを試してみてください。

j = 1 
for i in range(height): 
    for k in range(1,height + i+1): 
     if (k < height - i): 
      print(" ", end='') 
     else: 
      print(j, end='') 
      j+=1 

    print() 
関連する問題