這是非常相似的問題,我有課上做一次,但我們在C中實現它其實挺爽到現在回去,在蟒蛇重新實現它,看看差異。
我們在課堂上遇到的問題非常相似。我的Python代碼,使這項工作是:
while True:
rows = input('Enter the number of rows: ')
if 3 <= rows <= 33:
break
else:
continue
padding = ' '*rows
while rows > 0:
print(padding[rows:] + '*'*rows)
rows = rows - 1
- 以下修改,打印倒三角輪廓:
# print the outline of an inverted triangle:
height = rows
# inner padding for min height (3)
inner_buffer = [0, 1, 3]
while len(inner_buffer) <= rows:
inner_buffer.append(inner_buffer[-1]+2)
while height > 0:
outer_padding = ' '*(rows - height)
if height == 1:
print(outer_padding + '*')
else:
inner_padding = ' '*(inner_buffer.pop()-2)
print(outer_padding + '*' + inner_padding + '*')
height = height - 1
有一定是一個更優雅的希望將代碼這一點,而只是一個工作黑客,看看我們是否在正確的軌道上。
新修訂如下: - 定義
將產生一個正三角形或倒三角形功能
def get_rows():
while True:
rows = input('Enter the number of rows: ')
if 3 <= rows <= 33:
return rows
def triangle(rows, regular=False, invert=True):
if invert:
height = -1 * rows
else:
height = 0
# inner padding for min height (3)
inner_buffer = [0, 1, 3]
while len(inner_buffer) <= rows:
inner_buffer.append(inner_buffer[-1]+2)
level = 0
while level <= rows:
outer_padding = ' '*(rows - abs(height))
if height == 0:
print(outer_padding + '*')
else:
inner_padding = ' '*(inner_buffer[ abs(height) ])
print(outer_padding + '*' + inner_padding + '*')
height += 1
level += 1
讓我知道:)
你不需要空格填充了三角如果它倒過來? – 2013-03-26 08:34:18
爲什麼不用手工製作倒三角形,並根據高度和線數來計算每一行中空格,星星等數量的變化? – Patashu 2013-03-26 08:42:46
你是什麼意思?你能給我舉個例子嗎? – user2210599 2013-03-26 08:56:34