私のプログラミング クラスでは、次のシーケンスのような "ピラミッド" (IDLE で) を作成するプログラムを作成する必要があります。
1
1 2 1
1 2 4 2 1
1 2 4 8 4 2 1
1 2 4 8 16 8 4 2 1
それは2**(row)
どこでrow = 0
(最初は)行うでしょう。for
ループで使用します。
n
5 を超える値に対して期待どおりの出力が得られないという問題が発生します。
これまでの私のコードは次のとおりです。
def pyramid(n):
rows, num, x, numbers, space_length, i_length = 0, '', 0, {}, 0, 0
for rows in range(n):
x = int(len(num) / 2)
y = str(2**rows) + ' '
num = num[0:x + 1] + y + num[x - 1 :]
numbers[rows + 1] = num
space_length = int(len(numbers[n]) / 2)
for i in numbers:
i_length = int(space_length - (len(numbers[i]) / 2))
numbers[i] = (' ' * i_length) + numbers[i]
print(numbers[i])
def main(): #I have to use the function of main() because my teacher requires it.
n = int(input("Enter an integer greater than 0: "))
if type(n) != int or n <= 0:
raise TypeError("N must be an integer greater than 0.")
pyramid(n)
main()
これは私が得る出力です:
>>>
Enter an integer greater than 0: 10
1
1 2 1
1 2 4 2 1
1 2 4 8 4 2 1
1 2 4 8 16 8 4 2 1
1 2 4 8 1632 16 8 4 2 1
1 2 4 8 1632 64 2 16 8 4 2 1 #The 2 should be 32; space between 16 and 32.
1 2 4 8 1632 64128 64 2 16 8 4 2 1 #Same thing again; spacing messes up.
1 2 4 8 1632 64128256 28 64 2 16 8 4 2 1
1 2 4 8 1632 64128256512 56 28 64 2 16 8 4 2 1
誰かがこれを修正するのを手伝ってくれるなら、それは素晴らしいことです. ありがとう!