第一种(设置二维列表设置每个元素为0进行替换元素)
代码演示:
n = eval(input("请输入想要的行数")) lst=[[0 for j in range(n)] for i in range(n)] # lst2=[[0]*n]*n for i in range(n):for j in range(i+1):if j==0 or j==i:lst[i][j]=1else:lst[i][j]=lst[i-1][j-1]+lst[i-1][j]print(lst[i][j],end=" ")#按直角三角形进行输出print()for i in range(n): #按等边三角形输出s = " " * (n - i - 1)for j in lst[i]:if j!=0:s = s + str(j) + " "print(s)
演示结果:
请输入想要的行数7
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
第二种(计算出每一行,得到完整二维列表后进行输出)
代码演示
#给出n,输出前n行的杨辉三角 n = eval(input("请输入想要的行数")) lst = [[1],[1,1]] for i in range(2,n): #已经给出前两行,求剩余行lst1 = lst[i-1] #上一行print(lst1)first = [1] #定义每一行第一个数# print(first)for j in range(i-1): #算几次first.append(lst1[j]+lst1[j+1]) #每个数字等于上行的左右两个数字之和first.append(1) #每行最后一个数字lst.append(first) print("普通输出:{}".format(lst)) for i in range(n): #按等边三角形输出s = " " * (n - i - 1)for j in lst[i]:s = s + str(j) + " "print(s)
演示结果
请输入想要的行数7
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1