这是非常相似的问题,我有课上做一次,但我们在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