在Tony Gaddis的'开始使用Python第3版'中,练习的解决方案之一如下:
character = '#'
numRows = 7
space = ' '
for row in range(numRows):
for col in range(row + 2):
if col == 0 or col == row + 1:
print(character, end='')
else:
print(space, end='')
print()
我班上没有人理解这个解决方案是如何工作的,更具体地说,是第6-7行的数学。有人可以解释每一行如何产生输出:
##
# #
# #
# #
# #
# #
# #
答案 0 :(得分:2)
每行的空格比前一行多一个。首先遍历行
for row in range(numRows):
然后,每行迭代必须打印的列(#或空格)
for col in range(row + 2):
现在,如果列是第一个或最后一个打印分隔符(#)
if col == 0 or col == row + 1:
print(character, end='')
这里的技巧是告诉print它不应该像在
中那样以换行符结束(默认行为)print('one line')
print('another line')
如果不是第一列或最后一列只是打印一个空格
else:
print(space)
最后一句只是写新线
print()