题目出自python入门经典第六章课后题
解决思路如下:
每一行开始与结尾人为插入0元素,便于计算,在最后输出的时候不显示就可以了
lines = input("Input the lines:")
while not lines.isdigit():
print("Please enter an integer:")
lines = input("Input the lines:")
lines = int(lines)
tangle = []
temple = []
for i in range(lines):
if i == 0:
first = [0, 1, 0]
tangle.append(first)
else:
for j in range(i+1):
num = tangle[i - 1][j] + tangle[i - 1][j + 1]
temple.append(num)
temple.insert(0, 0)
temple.append(0)
tangle.append(temple)
temple = []
for i in range(lines):
str1 = " ".join('%s' % num for num in tangle[i][1:-1])
print(str1.center(50))
Input the lines:6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
最后想要得到题目的风格,需要将列表变成字符串,然后使用center就可以居中表示。
我在转换的时候遇到一个问题TypeError: sequence item 0: expected str instance, int found
经过查看前辈们经验,知道是列表中数字不能直接转成字符串,所以要进行转换操作
str1 = " ".join('%s' % num for num in tangle[i][1:-1])
引用地址